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.
|T||8/25||Welcome and course overview [slides]|
|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 126.96.36.199
|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, 188.8.131.52 until the end of 3.3.1
|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.
|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.
|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)
|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
|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.
|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.
|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)
|T||10/20||Pointers and Expressions [slides]||12:Pointers, 13:Expressions||
Sebesta, 6.9, 7.1, 7.2, 7.3.
|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).
|T||10/27||Subtyping [slides]||15: Subtyping||
Amer Diwan. An Introduction to Subtyping.
|Pointers and memory management|
|R||10/29||Subtyping [slides]||15: Subtyping|
|T||11/3||Midterm review and subtyping [slides, references: SML, C, C++]||15: Subtyping|
|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.
|R||11/12||Parameter passing [slides]||16: Parameters||
Sebesta, 9.5.3 up to and including 9.6, 9.7 (optional)
|T||11/17||Parameter passing: eager vs. lazy evaluation [slides]||16: Parameters|
|R||11/19||Parametric polymorphism [slides]||17: Generics||
Sebesta, 10.1, 10.2, and 10.3.
Review (optional). Harper, 8.2.
|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]
|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|