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

Projects
Homeworks
Final Exam
Midterm Exam
Quizzes


  • 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.