The following table gives the topics we will cover in the class and the approximate number of lectures to be spent on each topic. The "Reading" column lists the reading material for the class. You should do the reading for a class before attending the class.
Principles of Programming Languages is a very useful course: in this course you will learn many skills that will be useful to you in using, learning, and evaluating programming languages. For each topic I've identified certain skills that you should get from that topic. Approximately 80% of the points on the exams and assignments will be given on these skills. In other words, if you master all these skills you will get 80% of the points (which in previous years has translated into a B+). The remaining points will be based on synthesis questions: i.e., questions that combine multiple topics and are not tied to a single skill.
The schedule entries below the empty red row is tentative: it may change. However, the exam dates are fixed.
| Date | Topic | Skills | Reading |
| 1/13 | Introduction
|
||
| 1/15 |
Evaluating languages: criteria and characteristics |
1 | Chapter 1 up to and including 1.4, 1.6 |
| 1/16 | Recitation: Using Table 1.1 | ||
| 1/20 | Syntax and semantics
|
2 | 3.1, 3.2, 3.3 up to and including 3.3.1.6 |
| 1/22 | Syntax continued
Assignment 1 due |
3 | 3.3.1.7 till end of 3.3.1 |
| 1/23 | Recitation: Java grammar | ||
| 1/27 | Names and bindings
|
4 | 5.1, 5.2, 5.3, 5.4 |
| 1/29 | Types and type checking
Assignment 2 due |
5 | Type checking notes |
| 1/30 | Recitation: structural and name equality | ||
| 2/3 | Scoping
|
6 | 5.8, 5.9, 5.10, 5.11 |
| 2/5 | Data types
Assignment 3 due |
7a | 6.1 to 6.6 inclusive (skip sections 6.3.5 and 6.5.3 to 6.5.8). This reading is quite long so please give yourself enough time. |
| 2/6 | Recitation: Representations of arrays | ||
| 2/10 | Data types continued
|
7b | 6.7, 6.8 |
| 2/12 | Data types continued
Assignment 4 due |
8 | 6.9 |
| 2/13 | Recitation: Review | ||
| 2/17 | Midterm 1
|
||
| 2/19 | Expressions
|
9 | 7.1,7.2, 7.3 |
| 2/20 | Recitation: manually using reference counting | ||
| 2/24 | Iterative and conditional constructs
|
10 | 7.6, Chapter 8 (quite long so please allocate time accordingly) |
| 2/26 |
Assignment 5 due |
11 | Subtyping notes |
| 2/27 | Recitation: Procedures returning procedures | ||
| 3/3 | Subtyping continued (arrays, procedures, variables) | ||
| 3/5 | Parameter passing modes. Understand and
distinguish between:
Assignment 6 due |
12 | Chapter 9 upto but not including including 9.5.3. Skip 9.2.4. |
| 3/6 | Recitation: Examples of subtyping | ||
| 3/10 | Issues with parameter passing
|
13 | 9.5.3 up to and including 9.7 |
| 3/12 | Generic subprograms
Assignment 7 due
|
14 | 9.8 to 9.10, inclusive |
| 3/13 | Recitation: passing procedures as parameters in C | ||
| 3/17 | Implementing Subprograms
|
15 | 10.1 upto and including 10.4.2 |
| 3/19 |
Finish up implementing subprograms (esp. first-class functions) and cover constrained type arguments for generic functions. Assignment 8 due |
||
| 3/20 | Recitation: Help session | ||
| 3/31 | Midterm 2
|
||
| 4/2 | Abstract data types
|
16 | 11.1 to 11.4.3 inclusive, 11.5.1-11.5.3 inclusive |
| 4/3 | Recitation: | ||
| 4/7 | Object oriented concepts
|
17 | 12.1, 12.2, 12.3, and this
document
|
| 4/9 | Object oriented concepts
Assignment 9 due |
18 | 12.4, 12.5, 12.6 Interfaces (read the pages referred to by the links "What is an interface", "defining an interface", "implementing an interface", "using an interface as a type" |
| 4/10 | Implementing O-O languages | ||
| 4/14 | Introduction to functional languages
|
19 | 15.1, 15.2, 15.3, 15.7 |
| 4/16 | Standard ML
Assignment 10 due |
21 | Sections 2.1 upto but not including Section 2.6 of the SML/NJ tutorial |
| 4/17 | Recitation: Narrowing and widening conversions in Java | ||
| 4/21 | Continuing with Standard ML
|
21 | Sections 2.6 and 2.7 (upto page 39) of the SML/NJ tutorial |
| 4/23 | Exception handling
Assignment 11 due
|
22 | 14.1, 14.3 |
| 4/24 | Recitation: Exception handling | ||
| 4/28 | Exception handling continued
|
22 | 14.4 |
| 4/30 | Review, wrap up etc. Practice assignment (not to be turned in) |
||
| 5/1 | Recitation: Help session with Amer | ||
| 5/2 | Final exam from 4:30 p.m. to 7:00 p.m.
|