CS 312 Schedule Fall 2005

The notes linked below are required reading, but they are not a substitute for attending lecture and recitation.

Meeting Date

  Topic

Lec. 1 August 25 Course overview
Rec. 1 29 Basic types and expressions
Lec. 2 30 SML syntax and program evaluation
Rec. 2 31 Tuples, records, datatypes, and pattern matching
Lec. 3 September 1 Recursive datatypes: modeling integers and lists
Rec. 3 5 Higher-order and anonymous functions, currying
Lec. 4 6 Polymorphism and parameterized types
Rec. 4 7 Datatype pitfalls, polymorphism and lists
Lec. 5 8 Scope, evaluation with substitutions
Rec. 5 12 Folding and tail recursion 
Lec. 6 13 Functional specifications
Rec. 6 14 Structures and signatures
Lec. 7 15 Modules and data abstractions
Rec. 7 19 Functional stacks and queues
Lec. 8 20 Documenting implementations
Rec. 8 21 More data abstractions
Lec. 9 22 The Substitution Model
Rec. 9 26 Sets and Maps
Lec. 10 27 Recursion in the Substitution Model
Rec. 10 28 Functors
Lec. 11 29 Induction
Rec. 11 October 3 More on induction
Lec. 12 4 Program correctness
Rec. 12 5 Asymptotic Complexity
Lec. 13 6 Imperative language features
October 8-11: Fall Break
Rec. 13 12 Prelim I review
Lec. 14 13 Red-black trees (lecturer: Paul Eastlund)
October 13 --- Prelim I Exam: Upson B17, 7:30pm - 9:00pm
Rec. 14 17 Proving Running Times With Induction
Lec. 15 18 Splay trees
Rec. 15 19 Lambda Lifting: review for Problem Set 4
Lec. 16 20 An ML Interpreter
Rec. 16 24 Refs and Arrays
Lec. 17 25 Mutable data abstractions
Rec. 17 26 Refs in the substitution model
Lec. 18 27 Environment Model Diagrams
Rec. 18 31 Project I Overview
Lec. 19 November 1 Proving program properties with program invariants (lecturer: Prof. David Gries)
Rec. 19 2 Environment Model Diagrams
Lec. 19 3 Environment Model Diagrams
Rec. 20 7 Garbage Collection I
Lec. 21 8 Environment Model Diagrams
Rec. 21 9 Garbage Collection II
Lec. 21 10 Type inference I
Rec. 22 14 Prelim Review
Lec. 23 15 Type Inference II
Rec. 23 16 Amortized Analysis
Lec. 23 17 Design Patterns I
Rec. 24 21 Lazy evaluation
Lec. 25 22 Desing patterns II
November 23-27: Thanksgiving Break
Rec. 25 28 Streams
Lec. 25 29 Building large software systems (lecturer: Larry Stabile)
Rec. 26 30 Modules and specifications
Lec. 26 December 1