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 12:30PM - 1:45PM in NCB 320
Office Hours: TR 2:00PM to 3:00PM
Textbook: Concepts of Programming Languages, 12th Edition, Robert W. Sebesta


Teaching Assistants

Teaching Assistant Office Hours
Waris Gill TBA
Minhyuk Ko TBA
April Monk TBA
Mae Pigeon TBA


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


Course Schedule


Week Lecture Topic Description Reading Milestones
1 Aug 23rd Introduction Why are we studying programing languages? Chapter 1
Aug 25th History of Programming Languages Part 1 Chapter 1
2 Aug 30th History of Programming Languages Part 2 Chapter 2
Sep 1st Language Syntax PL and Regular Expression Chapter 3
3 Sep 6th Language Syntax PL and their Grammars Chapter 3 HW 1 Released
Sep 8th Language Syntax Lexical Analysis Chapter 4 Project 1 Released
4 Sep 13th Language Syntax Syntactic Analysis and Parser Chapter 4
Sep 15th Project 1 Tutorial and Demo
5 Sep 20th Language Semantics Static and Dynamic Semantics Chapter 3 HW1 Due
Sep 22nd Name, Scope, Binding Part 1 Chapter 5
6 Sep 27th Name, Scope, Binding Part 2 Chapter 5 HW2 Released
Sep 29th Project 2 Tutorial and Demo Project 1 Due, Project 2 Released
7 Oct 4th Exam Review
Oct 6th

Midterm exam during lecture

8 Oct 11th Functional Programming Chapter 15 HW2 Due
Oct 13th Functional Programming Chapter 15
9 Oct 18th Functional Programming Chapter 15 HW3 Released
Oct 20th Lambda Calculus Practice and Data Types Chapter 6
10 Oct 25th Logic Programming Part 1 Chapter 16 Project 2 Due, Project 3 Released
Oct 27th Project 3 Tutorial and Demo
11 Nov 1st Logic Programming Part 2 Chapter 16 HW3 Due
Nov 3rd Expressions and Assignment Part 1 Chapter 7
12 Nov 8th Expressions and Assignment Part 2 Chapter 7 HW4 Released
Nov 10th Control Structures Chapter 8
13 Nov 15th Subprograms Part 1 Chapter 9
Nov 17th Project 4 Tutorial and Demo Project 3 Due, Project 4 Released
Nov 22nd

Thanksgiving Break

Nov 24th

Thanksgiving Break

15 Nov 29th Subprograms Part 2 Chapter 9 HW 4 Due
Dec 1st Subprograms Chapter 10
16 Dec 6th Exam Review Project 4 Due
Dec 12th

Final exam, Starts at 10:05AM and ends at 12:05PM


Grading Policy

Projects
Homeworks
Final Exam
Midterm Exam
Quizzes


  • 40% — Four projects in: Python, Haskell, Prolog, and Scala.
  • 20% — Four Homeworks/Programming Assignments.
  • 25% — 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 a homework. The final grade of the course at the end of the semester will be curved.

We are running a very tight schedule with a total of eight HW/assingments submissions and two exams. Late submission will likely cause a domino effect on other components and submissions of the course. Essentially, it is a zero sum game– 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 request.

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.