G22.2110-001 Programming Languages
Class: Tuesdays, 7:10–9:00pm, WWH 102
Office hours: Wednesdays, 2–3pm, 715 Broadway, room 711
Recitation: Ayse Naz Erkan,
Mondays, 8:10–9:00pm, WWH 101
[ Overview |
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
Language Pragmatics (PLP), 3rd edition, by Michael L. Scott.
Mailing List. Please subscribe to the class
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
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
Fall '08, and
The syllabus will change, so please check this page at least once a
- (Jan 19) Introduction to programming languages, syntax of programming
Read PLP 1 & 2.1.
- (Jan 26) Names, scopes, and bindings.
Read PLP 3.1–3.4 excluding 3.3.4 and 3.3.5.
- (Feb 2) Control flow. Read PLP 6.1–6.5.
- (Feb 9) Functions and procedures. Read PLP 6.6, 8.1–8.3.
- (Feb 16) Functional programming.
Read PLP 10, including 10.6.1 on the CD, and Jung
on Lambda Calculus.
- (Feb 23) Types. Read PLP 7.
list.ml and plist.ml.
- (Mar 2) More types. Read PLP 7.
- (Mar 9) In-class midterm exam. The exam is closed notes &
book. You have time for the entire period.
- (Mar 16) Spring break.
- (Mar 23) Program structure. Read PLP 3.3.4, 3.3.5, 3.7.
- (Mar 30) Object-oriented programming. Read PLP 9.
- (Apr 6) More object-oriented programming. Read PLP 9.
- (Apr 13) Generic programming. Read PLP 8.4.
- (Apr 20) Exceptions. Read PLP 8.5.
- (Apr 27) Concurrency. Read PLP 12.
- (May 4) Q&A session to help with final preparation.
Test.java and test.ml.
- (May 11) Final exam. 7:10–9:00pm, Silver 206.
Languages and their implementations:
- Python: regular expressions and context-free
grammars. Assigned 1/26. Due 2/9.
- Scheme: call-by-value, call-by-name, and
call-by-need. Assigned 2/9. Due 2/23.
- OCaml: the simply typed lambda calculus.
Assigned 2/23. Due 3/23.
- C: Portable Network Graphics (PNG).
Assigned 3/23. Due 4/6.
- Java: class signatures. Assigned 4/6.