'(1 2 3)
at the prompt.
Date | Topic | Required Reading | Notes | Assignments Out | Slides |
8/26 | Introduction to class and Racket | code | slides | ||
8/31 | Functions, pairs, lists | code For a bit of light reading, try cons or car and cdr. |
slides | ||
9/2 | Practice with box-and-pointer diagrams, let expressions | code | slides | ||
9/9 | Racket practice | code (see Moodle for partial solutions) | Project 1, due 9/15 11:55pm | (no slides) | |
9/14 | Internal defines/let wrapup, benefits of no mutation, static vs dynamic typing | slides | |||
9/16 | Tail recursion and accumulators | code | slides | ||
9/21 | First class functions I | code | slides | ||
9/23 | First class functions II | code | Project 2, due 9/30 11:55pm | slides | |
9/28 | Lexical scoping I | code handout |
slides | ||
9/30 | Lexical scoping II (env diagram practice) | handout | (no slides) | ||
10/5 | Finish lexical scope, dynamic scope, foldr, start function closure idioms | slides | |||
10/7 | Function closure idioms (currying, mutation, callbacks, ADTs) | code | slides | ||
10/12 | ADT env diagram practice, mutation, delayed/lazy evaluation | code | slides | ||
10/14 | Thunks, lazy evaluation, streams | code | Project 3, due 11/4 11:55pm | slides | |
10/19 | Fall break | ||||
10/21 | Stream practice | code | slides | ||
10/26 | Prof Larkins' lecture | ||||
10/28 | Midterm | ||||
11/2 | Stream wrapup, memoization, static/dynamic typing comparison | slides | |||
11/4 | Intro to Java | Rational class | Project 4, due 11/13 11:55pm [ startup code ] [ rsound installation directions ] |
slides | |
11/9 | OOP from the ground up, lists, practice | Point/Point3D classes | slides | ||
11/11 | Sets, maps, more practice, inheritance | (continue with previous slides) | |||
11/16 | Java exceptions, threading | CountingEx/Bank classes | Project 5, due 11/23 11:55pm [ startup code ] |
slides | |
11/18 | More threading | Restaurant classes | (see previous slides) | ||
11/23 | Late binding/dynamic dispatch; building our own OOP system | Point/Point3D/ColorPoint in Racket | Project 6, due 12/7 11:55pm [ startup code ] |
slides | |
11/25 | (Thanksgiving) | ||||
11/30 | Interpreters I | slides | |||
12/2 | Interpreters II | Project 7, due 12/14 11:55pm [ startup code ] |
(see previous slides) | ||
12/7 | Event-driven programming | slides | |||
12/9 | Victory lap/course evals | slides |