CS 3304 - Comparative Languages
Analysis and Comparison of Programming Languages and their Implementations
Course Information
Instructor: Muhammad Ali Gulzar
Office: 4106 Gilbert Place (220 Gilbert Street)
Lecture : 5:30 PM - 6:45 PM MW Surge Space Building 104B
Office Hours: Tuesday 9-10AM
Textbook: Concepts of Programming Languages, 12th Edition, Robert W. Sebesta
Teaching Assistants
| Teaching Assistant | Office Hours |
|---|---|
| Jason Banuelos | TBD |
| Bikash Kumar Paul | TBD |
| Farooq Khan | TBD |
| Khyati Goyal | TBD |
Course Description
This course in programming languages constructs emphasizes the run-time behavior of programs. The languages are studied from two points of view: (1) the fundamental elements of languages and their inclusion in commercially available systems, and (2) the differences between implementations of common elements in languages. A grade of C or better is required in CS prerequisite 2604 or 2606. This course provides a capstone to the study of programming languages prior to the more detailed study of the use of those languages in advanced applications. It further provides a broadening in the experiential level of students who might otherwise become narrow in the understanding of programming languages.
Learning Objectives
Having successfully completed this course, the student will be able to:
- Make informed decisions in the choice of programming languages for specific problems
- Develop an understanding of the organization of programming languages, especially the run-time behavior of programs
- Introduce the formal study of programming language specification and analysis
- Rewire their thought process of designing software in a non-traditional programming style
- Be able to port a programming solution across different programming paradigms (often required in practical settings).
- Get a deep understanding of the compilation and interpretation process of different programming language paradigms.
Course Schedule
| Week | Lecture | Topic | Description | Reading | Milestones |
|---|---|---|---|---|---|
| 1 | Jan 21 | Introduction | Why are we studying programing languages? | ||
| 2 | Jan 26 | History of Programming Languages | Part 1 and Part 2 | Chapter 1 and 2 | |
| Jan 28 | Language Syntax | PL and Regular Expression | Chapter 3 | ||
| 3 | Feb 2 | Language Syntax | PL and their Grammars | Chapter 3 | HW 1 Released |
| Feb 4 | Language Syntax | Lexical Analysis | Chapter 4 | Project 1 Released | |
| 4 | Feb 9 | Language Syntax | Syntactic Analysis and Parser | Chapter 4 | |
| Feb 11 | Project 1 Tutorial and Demo | ||||
| 5 | Feb 16 | Language Semantics | Static and Dynamic Semantics | Chapter 3 | HW1 Due, HW2 Released |
| Feb 18 | Name, Scope, Binding | Part 1 | Chapter 5 | ||
| 6 | Feb 23 | Name, Scope, Binding | Part 2 | Chapter 5 | Project 1 Due, Project 2 Released |
| Feb 25 | Project 2 Tutorial and Demo | Haskell Introduction | |||
| 7 | Mar 2 | Exam Review | HW 2 Due | ||
| Mar 4 | Midterm exam during lecture |
||||
| Mar 9 | Spring Break |
||||
| Mar 11 | Spring Break |
||||
| 9 | Mar 16 | Functional Programming | Chapter 15 | HW3 Released | |
| Mar 18 | Functional Programming | Chapter 15 | |||
| 10 | Mar 23 | Functional Programming | Chapter 15 | Project 2 Due, Project 3 Released | |
| Mar 25 | Lambda Calculus Practice and Data Types | Chapter 6 | |||
| 11 | Mar 30 | Logic Programming | Part 1: Introduction | Chapter 16 | HW 3 Due |
| Apr 1 | Project 3 Tutorial and Demo | ||||
| 12 | Apr 6 | Logic Programming | Part 2: Features and Programming | Chapter 16 | |
| Apr 8 | Logic Programming | Part 3: Backtracking and advanced features | HW4 Released | ||
| 13 | Apr 13 | Expressions and Assignment | Part 1 | Chapter 7 | Project 3 Due, Project 4 Released |
| Apr 15 | Expressions and Assignment | Part 2 | Chapter 7 | ||
| 14 | Apr 20 | Control Structures | Chapter 8 | ||
| Apr 22 | Project 4 Tutorial and Demo | ||||
| 15 | Apr 27 | Subprograms | Part 1 | Chapter 9 | HW 4 Due |
| Apr 29 | Subprograms | Part 2 | Chapter 9 | ||
| 16 | May 4 | Subprograms | Part 3 | Chapter 10 | |
| May 6 | Final Exam Review | Project 4 Due | |||
Grading Policy
- 40% — Four projects in: Python, Haskell, Prolog, and Scala.
- 25% — Four Homeworks/Programming Assignments.
- 20% — Final Exam
- 10% — Midterm Exam
- 05% — Pop Quizzes (5x 1%)
On average, students will have 3 weeks to finish a project and 2 weeks to finish homework.
We are running a very tight schedule with a total of eight HW/assignment submissions and two exams. Late submission will likely cause a domino effect on other components and course submissions. Essentially, it is a zero-sum – more time for one component means less time for others. Therefore, late submissions will not be accepted. Please ask the instructor two weeks in advance for any approved accommodation requests.
This course is fast-paced. We will learn eight programming languages in 15 weeks. The assignments/projects are calibrated based on the instruction time spent on each programming language. This course will provide an overview of the fundamental components of languages and compare such features in different languages in preparation for advanced programming applications in a commercial setting.
Accommodation statement
Virginia Tech welcomes students with disabilities into the University’s educational programs. The University promotes efforts to provide equal access and a culture of inclusion without altering the essential elements of coursework. If you anticipate or experience academic barriers that may be due to disability, including but not limited to ADHD, chronic or temporary medical conditions, deaf or hard of hearing, learning disability, mental health, or vision impairment, please contact the Services for Students with Disabilities (SSD) office (540-231-3788, ssd@vt.edu, or visit www.ssd.vt.eduLinks to an external site.). If you have an SSD accommodation letter, please meet with me privately during office hours as early in the semester as possible to deliver your letter and discuss your accommodations. You must give me a reasonable notice to implement your accommodations, especially for a waiver to participate in class.