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.
As the class progresses, I'll modify this schedule based on the needs of the class; so please don't take this schedule as something that is cast in stone on the first day of class. In general, lines above the blank red row are polished: they will most likely not change while lines below it are likely to change as the semester progresses. The midterm dates will not change.
| Date | Topic | Skills | Reading |
| 1/15 | Introduction
|
||
| 1/17 |
Evaluating languages: criteria and characteristics |
1 | Chapter 1 upto and including 1.4, 1.6 |
| 1/17 | Recitation: Using Table 1.1 | ||
| 1/22 | Syntax and semantics
|
2 | 3.1, 3.2, 3.3 up to and including 3.3.1.6 |
| 1/24 | Syntax continued
|
3 | 3.3.1.7 till end of 3.3.1 |
| 1/24 | Recitation: Java grammar | ||
| 1/29 | Names and bindings
|
4 | 5.1, 5.2, 5.3, 5.4 |
| 1/31 | Types and type checking
|
5 | Type checking notes |
| 1/31 | Recitation: structural and name equality | ||
| 2/5 | Scoping
|
6 | 5.8, 5.9, 5.10, 5.11 |
| 2/7 | Data types
|
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/7 | Recitation: Representations of arrays | ||
| 2/12 | Data types continued
|
7b | 6.7, 6.8 |
| 2/14 | Data types continued
|
8 | 6.9 |
| 2/14 | Recitation: structural equality (revisited) and union types | ||
| 2/19 | Midterm 1
|
||
| 2/21 | Expressions
|
9 | 7.1,7.2, 7.3 |
| 2/21 | Recitation: manually using reference counting | ||
2/26 |
Iterative and conditional constructs
|
10 | 7.6, Chapter 8 |
| 2/28 |
|
11 | Subtyping notes |
| 2/28 | Recitation: Procedures returning procedures | ||
| 3/4 | Subtyping continued (arrays, procedures, variables) | ||
| 3/6 | 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: Cancelled (TA out of town) | ||
| 3/11 | Issues with parameter passing
|
13 | 9.5.3 up to and including 9.7 |
| 3/13 | Generic subprograms
Assignment 7 due
|
14 | 9.8 to 9.10, inclusive |
| 3/13 | Recitation: passing procedures as parameters in C | ||
| 3/18 | Implementing Subprograms
|
15 | 10.1 upto and including 10.4.2 |
| 3/20 | Abstract data types
Assignment 8 due |
16 | 11.1 to 11.4.3 inclusive, 11.5.1-11.5.3 inclusive |
| 3/20 | Recitation: Help session | ||
| 4/1 | Midterm 2
|
||
| 4/3 | Object oriented concepts
|
17 | 12.1, 12.2, 12.3, and this
document
|
| 4/3 | Recitation: OO and dynamic dispatch | ||
| 4/8 | Object oriented concepts
|
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 | Introduction to functional languages
Assignment 9 due |
19 | 15.1, 15.2, 15.3, 15.7 |
| 4/10 | Recitation: Narrowing and widening conversions in Java | ||
| 4/15 | Guest lecture by Devin Coughlin: "Implementing Dynamic Dispatch" | 20 | 12.11 |
| 4/17 | Standard ML
Assignment 10 due |
21 | Sections 2.1 upto but not including Section 2.6 of the SML/NJ tutorial |
| 4/17 | Recitation: Extended SML examples | ||
| 4/22 | Continuing with Standard ML
|
21 | Sections 2.6 and 2.7 (upto page 39) of the SML/NJ tutorial |
| 4/24 | Exception handling
Assignment 11 due
|
22 | 14.1, 14.3 |
| 4/24 | Recitation: Exception handling | ||
| 4/29 | Exception handling continued
|
22 | 14.4 |
| 5/1 | Review, wrap up etc. Assignment 12 due |
||
| 5/1 | Recitations | ||
| 5/3 | Final exam, 7:30 to 10:00 a.m. |