CS 312 Schedule
Spring 2005
The notes linked below are required reading, but
they are not a substitute for attending lecture and recitation. |
Meeting |
Date |
Topic
|
Lec. 1 |
January 25 |
Course overview |
Rec. 1 |
26 |
Basic types
and expressions |
Lec. 2 |
27 |
SML syntax and program
evaluation |
Rec. 2 |
31 |
Tuples,
records, datatypes, and pattern matching |
Lec. 3 |
February 1 |
Recursive datatypes: modeling
integers and lists |
Rec. 3 |
2 |
Higher-order
and anonymous functions, currying
|
Lec. 4 |
3 |
Polymorphism and
parameterized types |
Rec. 4 |
7 |
Datatype
pitfalls, polymorphism and lists |
Lec. 5 |
8 |
Scope, evaluation with
substitutions |
Rec. 5 |
9 |
Folding
and tail recursion |
Lec. 6 |
10 |
Functional specifications
|
Rec. 6 |
14 |
Structures and
signatures |
Lec. 7 |
15 |
Modules and data abstractions
|
Rec. 7 |
16 |
Functional
stacks and queues |
Lec. 8 |
17 |
Documenting
implementations |
Rec. 8 |
21 |
More
data abstractions |
Lec. 9 |
22 |
Programming with
rep invariants |
Rec. 9 |
23 |
Sets and Maps |
Lec. 10 |
24 |
Program
Testing
|
Rec. 10 |
28 |
Functors |
Lec. 11 |
March 1 |
Debugging Techniques |
Rec. 11 |
2 |
Induction and
program correctness |
Lec. 12 |
3 |
More inductive correctness proofs
|
Rec. 12 |
7 |
Asymptotic complexity
|
Lec. 13 |
8 |
Reasoning about complexity |
Rec. 13 |
9 |
Proving running times with induction
|
Lec. 14 |
10 |
Prelim I review |
March 10 |
Preliminary
Exam I, 7:30–9:00pm, Upson B17 |
Rec. 14 |
14 |
Mutable
data structures: refs and arrays |
Lec. 15 |
15 |
Red-black trees |
Rec. 15 |
16 |
Implementing ordered sets |
Lec. 16 |
17 |
Hash
Tables |
March 20-28: Spring Break |
Rec. 16 |
28 |
Substitution
model and refs |
Lec. 17 |
29 |
An ML interpreter |
Rec. 17 |
30 |
Problem
Set 5 Overview |
Lec. 18 |
31 |
The
Environment Model |
Rec. 18 |
April 4 |
Environment model:
recursion, lists, refs |
Lec. 19 |
5 |
Memory management |
Rec. 19 |
6 |
Representing
and traversing graphs |
Lec. 20 |
7 |
Garbage collection |
Rec. 20 |
11 |
Copying
collection |
Lec. 21 |
12 |
Type checking |
Rec. 21 |
13 |
More type-checking |
Lec. 22 |
14 |
Type inference and
unification |
Rec. 22 |
18 |
Let-polymorphism |
Lec. 23 |
19 |
Prelim II review |
April 19 |
Preliminary
Exam II, 7:30–9:00pm, Phillips 101 |
Rec. 23 |
20 |
Problem
Set 6 Overview |
Lec. 24 |
21 |
Data
locality and B-trees |
Rec. 24 |
25 |
Prelim
II recap |
Lec. 25 |
26 |
Splay
trees and amortized analysis |
Rec. 25 |
27 |
Priority
queues and binary heaps |
Lec. 26 |
28 |
Graph
search algorithms (lecturer: Lucja Kot) |
Rec. 26 |
May 2 |
Huffman coding |
Lec. 27 |
3 |
Concurrency |
Rec. 27 |
4 |
State
machines and regular expressions
|
Lec. 28 |
5 |
Continuations; Slides from class (lecturer: Lucja Kot) |
May 17 |
Final Exam, 9:00–11:30am,
Ives 105 |