The following schedule lists the topics we plan to cover and approximately the number of meetings we plan to spend on each topic. The schedule is tentative. Most likely, some things will change during the semester, and the schedule will be revised as necessary. This class is yours, so feel free to make suggestions.
The exam dates are fixed, so you may plan accordingly.
The Skills column references the skills you should acquire to help you focus your study.
The Reading column lists the assigned reading for the meeting. You should do the reading before attending class and view it as an introduction to spark discussion in class.
The Assignment column lists the due date for each assignment.
| Date | Topic | Skills | Reading | Assignment | |
|---|---|---|---|---|---|
| T | 8/25 | Welcome and course overview [slides] | |||
| No recitation | |||||
| R | 8/27 | Evaluating languages [slides] | 1: Evaluating languages |
Sebesta, 1.1-1.4 (inclusive), 1.6
Controversial editorial (optional). Joel Spolsky.
The Perils of JavaSchools.
Fun (optional).
O'Reilly. History of Programming Languages Poster.
|
Sign up on the course moodle and introduce yourself. |
| T | 9/1 | Syntax: context-free grammars [slides] | 2: Describing syntax |
Sebesta, 3.1, 3.2, 3.3 up to and including 3.3.1.6
|
|
| Evaluating languages: Table 1.1 | |||||
| R | 9/3 | Syntax: parse trees and derivations, ambiguous grammars, precedence and associativity [slides] | 3: Concrete and abstract syntax |
Sebesta, 3.3.1.7 until the end of 3.3.1
|
HW1 Due |
| T | 9/8 | Names and binding [slides] | 4: Binding |
Sebesta, 5.1-5.4 (inclusive)
|
|
| Syntax: if-then-else ambiguity | |||||
| R | 9/10 | Scoping [slides] | 5: Scoping |
Sebesta, 5.5-5.8 (inclusive). Note it's 5.8-5.11 in
the 8th edition.
|
HW2 Due |
| T | 9/15 | Introduction to functional languages [slides] | 6: Functional concepts |
Sebesta, 15.1-15.3 (inclusive), 15.7
Textbook supplement (optional). Harper, Chapter 2.
Here's another take on the functional versus imperative
computational models using ML as an example.
|
|
| Lifetime and scoping | |||||
| R | 9/17 | SML: Declarations, functions, and tuples [slides, sample code] | 7: SML |
Harper, 3.1-3.4 (inclusive), 3.5 (optional), Chapter 4,
Chapter 5
Textbook supplement (optional). Hansen and Rischel,
Chapter 2, Chapter 3.
|
HW3 Due |
| T | 9/22 | SML: Recursion, pattern matching, and datatypes [slides, sample code from class, answers to sample code] | 7: SML |
Harper, Chapter 6, Chapter 7, Chapter 9 (optional), Chapter 10
Textbook supplement (optional). Hansel and Rischel,
Chapter 5, 7.1-7.5 (inclusive)
|
|
| SML | |||||
| R | 9/24 | SML: Polymorphism and higher-order functions [slides, sample code from class, answers to sample code] | 7: SML |
Harper, Chapter 8, Chapter 11
Textbook supplement (optional). Hansel and Rischel,
Chapter 9
|
HW4 Due |
| T | 9/29 | SML: Higher-order functions [slides, sample code from class, answers to sample code] | 7: SML |
Harper, Chapter 24, Chapter 25 (optional), Chapter 26. You
may also want to review 7.3 before reading these chapters.
Pay special attention to Chapter 25. Also, we will not look
too closely at time and space complexity brought up in this
reading.
|
|
| Midterm review | |||||
| R | 10/1 | Midterm 1. Please bring blue books. | |||
| T | 10/6 | SML: Structural induction and correctness of code [slides, review code] | 8: Induction |
No new reading. Read Harper, Chapters 24 and 26, if you
have not yet done so.
|
|
| Midterm and project discussion | |||||
| R | 10/8 | Lambda calculus [slides, sample code from class, answers to sample code] | 9: Lambda |
Benjamin Pierce. Foundational Calculi for Programming Languages, up to and including 2.2.
Supplement (optional)
Wikipedia. Lambda Calculus, Informal Description. Wikipedia's overview of the lambda calculus is not bad.
|
PROJ1 Checkpoint Due |
| T | 10/13 | Type checking introduction [slides] | 10: Types |
Amer Diwan. Type Checking and Type Equality.
|
|
| Project discussion | |||||
| R | 10/15 | Data types [slides, unions example in C, unions example in SML] | 11: Data |
Sebesta, 6.1-6.8 inclusive (skip 6.3.5 and 6.5.3-6.5.8, focus
on 6.5-6.8)
|
|
| Su | 10/18 | PROJ1 Due | |||
| T | 10/20 | Pointers and Expressions [slides] | 12:Pointers, 13:Expressions |
Sebesta, 6.9, 7.1, 7.2, 7.3.
|
|
| Structural induction | |||||
| R | 10/22 | Iteration and conditionals [slides, project 1 sample solutions with discussion notes] | 14: Control |
Sebesta 7.6, Chapter 8 (quite long so please allocate time
accordingly).
|
HW5 Due |
| T | 10/27 | Subtyping [slides] | 15: Subtyping |
Amer Diwan. An Introduction to Subtyping.
|
|
| Pointers and memory management | |||||
| R | 10/29 | Subtyping [slides] | 15: Subtyping | ||
| F | 10/30 | HW6 Due | |||
| T | 11/3 | Midterm review and subtyping [slides, references: SML, C, C++] | 15: Subtyping | ||
| Midterm review | |||||
| R | 11/5 | Midterm 2 | |||
| T | 11/10 | Parameter passing [slides] | 16: Parameters |
Sebesta, Chapter 9 up to but not including 9.5.3, skip 9.2.4
and 9.2.5.
|
|
| Subtyping | |||||
| R | 11/12 | Parameter passing [slides] | 16: Parameters |
Sebesta, 9.5.3 up to and including 9.6, 9.7 (optional)
|
HW7 Due |
| T | 11/17 | Parameter passing: eager vs. lazy evaluation [slides] | 16: Parameters | ||
| Midterm discussion | |||||
| R | 11/19 | Parametric polymorphism [slides] | 17: Generics |
Sebesta, 9.8.
Sebesta, 10.1, 10.2, and 10.3.
Review (optional). Harper, 8.2.
|
HW8 Due |
| T | 11/24 | No class, Fall break | |||
| No recitation, Fall break | |||||
| R | 11/26 | No class, Thanksgiving | |||
| T | 12/1 | Abstract data types [slides] | 18: ADTs |
Sebesta, 11.1, 11.2, 11.3, 11.4.3, rest of 11.4 (optional),
11.5.3, rest of 11.5 (optional).
Harper, Chapter 18, 19, 20 (optional), 32.
|
|
| Parameter passing and generics | |||||
| R | 12/3 | Data abstraction and object-oriented concepts [slides, SML stack ADT sample code] | 19: OO |
Sebesta, 12.1, 12.2, 12.3
Supplement (optional). William R. Cook.
On
Understanding Data Abstraction, Revisited, OOPSLA/Onward!
2009. This essay has a nice discussion clarifying the
difference between abstract data types (ADTs) and data
abstraction with objects. The essay also points out
where this issue is confused in the textbook.
It's optional reading but highly
recommended. [blog discussions: cook, ltu]
|
HW9 Due |
| T | 12/8 | Object-oriented concepts [slides, Java stack sample code] | 19: OO |
Sebesta, 12.5, 12.7, rest of 12 (optional)
|
|
| Generics and ADTs | |||||
| R | 12/10 | Review: Bring your questions! | |||
| M | 12/14 | Final exam, 7:30pm-10:00pm, ECCR 105 | |||