Date | Topic | Required Reading | Notes | Assignments Out | Slides |
1/10 | Introduction to class and Racket | code | slides | ||
1/15 | No class (snow) | ||||
1/17 | Functions, pairs, lists | code For a bit of light reading, try cons or car and cdr. |
slides | ||
1/22 | Let, lambda, and the benefits of no mutation | code | Homework 1, due 1/30 11:55pm | slides | |
1/24 | Static vs dynamic typing; practice with Racket | code | slides | ||
1/29 | Tail recursion and accumulators | code | slides | ||
1/31 | First class functions I | code | slides | ||
2/5 | First class functions II | code | slides | ||
2/7 | Course motivation; lexical scoping and closures | code | Homework 2, due 2/15 11:55pm | motivation slides scoping/closure slides |
|
2/12 | Practice with environment diagrams | ||||
2/14 | Function closure idioms | code | slides | ||
2/19 | Closures (sorta) in Python and C++ | code | slides | ||
2/21 | Environment diagram practice, more mutation, started delayed evaluation | code | slides | ||
2/26 | Delayed evaluation, thunks, laziness, streams | code | Homework 3, due 3/8 11:55pm | slides | |
2/28 | Midterm | ||||
3/5 | More streams (continued lecture 12) | ||||
3/7 | No class, prof out of town | slides | |||
3/19 | Stream wrapup, memoization, static vs dynamic typing | code | Homework 4, due 3/27 11:55pm | slides | |
3/21 | Intro to Java | slides | |||
3/26 | OOP from the ground up, Lists, and practice | Homework 5, due 4/9 11:55pm | slides | ||
4/2 | Sets and Maps, more practice, inheritance | (see previous lecture slides) | |||
4/4 | Exceptions, Threading I | slides | |||
4/9 | Threading II | slides | |||
4/11 | Late binding in Java, C++, and Racket (building our own OO system) | Homework 6, due 4/18 11:55pm | slides | ||
4/16 | Building an interpreter | slides | |||
4/18 | Building an interpreter (cont'd), compilers | final project | slides | ||
4/23 | Event-driven programming | slides | |||
4/25 | Victory lap | slides |