G22.2110-001 Programming Languages

Spring 2010
Class: Tuesdays, 7:10–9:00pm, WWH 102

Instructor: Robert Grimm, rgrimm@cs.nyu.edu
Office hours: Wednesdays, 2–3pm, 715 Broadway, room 711

Recitation: Ayse Naz Erkan, Mondays, 8:10–9:00pm, WWH 101

[ Overview | Syllabus | Homework | Resources ]


This course explores the design, implementation, and use of mainstream programming languages. Topics include syntax, naming, scopes, state, types, abstraction through procedures, objects, and modules, as well as concurrency. Languages covered include Python, Scheme, C, Java, and O'Caml, with programming assignments for all these languages.

Textbook. Programming Language Pragmatics (PLP), 3rd edition, by Michael L. Scott.

Mailing List. Please subscribe to the class mailing list g22_2110_001_sp10. Be sure to email your class-related questions to this list and not just the instructor.

Grading Policy. Approximately 30% for individual assignments, 30% for the midterm, and 40% for the final exam.

Collaboration Policy. Generally, please adhere to the department's academic integrity policy. Specifically, you are encouraged to collaborate on homework assignments with other students in the course. You must, however, write up and hand in your own solutions, which clearly identify any collaborators.

Acknowledgements. This course builds on the experiences and notes of Clark Barrett, Allan Gottlieb, Martin Hirzel, and Ed Osinski. Previous versions of this course include Spring '07, Fall '08, and Fall '09.


The syllabus will change, so please check this page at least once a week.


  1. Python: regular expressions and context-free grammars. Assigned 1/26. Due 2/9.
  2. Scheme: call-by-value, call-by-name, and call-by-need. Assigned 2/9. Due 2/23.
  3. OCaml: the simply typed lambda calculus. Assigned 2/23. Due 3/23.
  4. C: Portable Network Graphics (PNG). Assigned 3/23. Due 4/6.
  5. Java: class signatures. Assigned 4/6. Due 4/27.


Languages and their implementations: