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.11.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: contextfree 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.15.4 (inclusive)


Syntax: ifthenelse ambiguity  
R  9/10  Scoping [slides]  5: Scoping 
Sebesta, 5.55.8 (inclusive). Note it's 5.85.11 in
the 8th edition.

HW2 Due 
T  9/15  Introduction to functional languages [slides]  6: Functional concepts 
Sebesta, 15.115.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.13.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.17.5 (inclusive)


SML  
R  9/24  SML: Polymorphism and higherorder 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: Higherorder 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.16.8 inclusive (skip 6.3.5 and 6.5.36.5.8, focus
on 6.56.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 objectoriented 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  Objectoriented 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:30pm10:00pm, ECCR 105 