CS 3304 - Comparative Languages
Analysis and Comparison of Programming Languages and their Implementations
Course Information
Instructor: Muhammad Ali Gulzar
Office: 2224 Knowledgeworks II
Lecture : TR 08:00 AM - 9:15 AM in NCB 160
Office Hours: TR 9:15AM to 10:30AM
Textbook: Concepts of Programming Languages, 12th Edition, Robert W. Sebesta
Teaching Assistants
Teaching Assistant | Office Hours |
---|---|
Ahmad Humayun | Wednesdays at 6:00 pm - 8:00 pm @CS Lounge in Torgersen |
Eunoh Cho | Tuesdays and Wednesdays at 3:00 pm - 4:00 pm @CS Lounge in Torgersen |
Anchita Hari Narayanan | Fridays from 10-12 pm at the CS Lounge in Torgersen |
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;
- Continue the development of problem solution and programming skills introduced in the elementary level material
Course Schedule
Week | Lecture | Topic | Description | Reading | Milestone |
---|---|---|---|---|---|
1 | Jan 18th | Introduction | Why are we studying programming languages? | Chapter 1 | |
Jan 20th | Introduction-2 and History of PLs | Part 1 | Chapter 1 | ||
2 | Jan 25th | History of Programming Languages | Part 2 | Chapter 2 | |
Jan 27th | Syntax | PL and Regular Expression | Chapter 3 | ||
3 | Feb 1st | Syntax | PL and their Grammars | Chapter 3 | HW 1 Released |
Feb 3rd | Syntax | Lexical Analysis | Chapter 4 | Project 1 Released | |
4 | Feb 8th | Syntax | Syntactic Analysis and Parser | Chapter 4 | |
Feb 10th | Project 1 Tutorial and Demo | miniSQLToPython , data and slides | |||
5 | Feb 15th | Semantic | Static and Dynamic Semantics | Chapter 3 | HW1 Due |
Feb 17th | Name, Scope, Binding | Part 1 | Chapter 5 | ||
6 | Feb 22nd | Name, Scope, Binding | Part 2 | Chapter 5 | HW2 Released |
Feb 24th | Project 2 Tutorial and Demo | practice.hs | Project 1 Due, Project 2 Released | ||
7 | Mar 1st | Exam Review | |||
Mar 3rd | Midterm exam during lecture |
||||
Mar 8th | Spring Break |
||||
Mar 10th | Spring Break |
||||
9 | Mar 15th | Functional Programming | Chapter 15 | HW2 Due | |
Mar 17th | Functional Programming | Chapter 15 | |||
10 | Mar 22nd | Functional Programming | Chapter 15 | HW3 Released | |
Mar 24th | Data Types | Chapter 6 | |||
11 | Mar 29th | Logic Programming | Part 1 | Chapter 16 | Project 2 Due, Project 3 Released |
Mar 31st | Project 3 Tutorial and Demo | ||||
12 | Apr 5th | Logic Programming | Part 2 | Chapter 16 | HW3 Due |
Apr 7th | Expressions and Assignment | Part 1 | Chapter 7 | ||
13 | Apr 12th | Expressions and Assignment | Part 2 | Chapter 7 | HW4 Released |
Apr 14th | Control Structures | Chapter 8 | |||
14 | Apr 19th | Project 4 Tutorial and Demo | Project 4 Released | ||
Apr 21st | Subprograms | Part 1 | Chapter 9 | Project 3 Due | |
15 | Apr 26th | Subprograms | Part 2 | Chapter 9 | HW 4 Due |
Apr 28th | *Buffer Lecture* | ||||
16 | May 3rd | Exam Review | Project 4 Due | ||
May 6th | Final exam, Starts at 07:45AM and ends at 09:45AM |
Grading Policy
- 40% — Four projects in: Python, Prolog, Haskel/Scala, and Java.
- 25% — Four Homeworks/Programming Assignments.
- 20% — Final Exam
- 10% — Midterm Exam
- 05% — Pop Quizzes (5x 1%)
We are running a very tight ship with a total of eight submissions and two exams. Late submission will likely cause a domino effect on other components and submissions of the course. Therefore, late submissions will not be accepted. Please ask the instructor two weeks in advance for any approved accommodation request.
The first two years of a computer science curriculum use specific programming languages for specific purposes. This course will provide both an overview of the fundamental components of languages as well as comparing the implementation of those features in different languages in preparation for advanced applications of programming in later courses.
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.