| Date | Assignment | Reading | Topic |
|---|---|---|---|
| Jan 23 | Administrivia; Turing machines | ||
| Jan 25 | HW1 | Sebesta 1; Graham | What's a “good” or “bad” programming language? |
| Jan 27 | Review proj1 | Review Project 1 interpreter | |
| Jan 30 | PLAI chap. 4 | Implementing functions | |
| Feb 01 | HW1 due; HW2 | PLAI chap. 5 | Deferred substitution and environments |
| Feb 03 | Sebesta 5.1-4 | Names and variables | |
| Feb 06 | Last day to add classes | ||
| Feb 06 | Sebesta 5.5-8 | Bindings and scope | |
| Feb 08 | Forget Scheme: let's try the project in Java | ||
| Feb 10 | Continue porting ae.rkt to Java |
||
| Feb 13 | That was a pain: let's go back to homework 2 in Scheme | ||
| Feb 15 | Work on homework 2 as a group | ||
| Feb 17 | Work on homework 2 as a group | ||
| Feb 20 | HW2 due; HW3 | PLAI chap. 6 | Discuss homework 3; first-class functions |
| Feb 21 | Last day to drop classes | ||
| Feb 22 | PLAI chap. 6 | Discuss homework 3; first-class functions | |
| Feb 24 | PLAI chap. 6 | Discuss homework 3; first-class functions | |
| Feb 27 | HW4 | LYAH 1-2 | Haskell introduction, ranges, comprehensions |
| Feb 29 | Practice with Haskell | ||
| Mar 02 | I'm away at a conference; no class | ||
| Mar 05 | LYAH 3 | Haskell: types | |
| Mar 07 | LYAH 4 | Haskell: patterns, when & let | |
| Mar 09 | LYAH 5-6 | Haskell: recursion and higher-order functions | |
| 3/12-3/16 | Spring break | ||
| Mar 19 | Haskell: memoization (Fibonacci) | ||
| Mar 21 | LYAH 7-8 | Haskell: user-defined types | |
| Mar 23 | discuss homeworks 3-4 | ||
| Mar 26 | HW3 due; HW5 | PLAI chaps. 12-13 | Mutable data structures |
| Mar 27 | Last day to withdraw from classes | ||
| Mar 28 | PLAI chaps. 12-13 | Implementation | |
| Mar 30 | HW4 due | PLAI chap. 14 | Assignable variables |
| Apr 02 | Implementation | ||
| Apr 04 | PLAI chaps. 15-16 | Challenges of Web programming; continuations | |
| Apr 06 | HW5 due; HW6 | “Continue” 1-6 | Web programming the Racket way |
| Apr 09 | Work on homework 6 | ||
| Apr 11 | Sebesta 3.1-3 | Specifying syntax | |
| Apr 13 | Sebesta 3.4-5 | Adding semantics to syntax | |
| Apr 16 | Research day: no classes | ||
| Apr 18 | HW6 due; HW7 | Sebesta 4.1-2 | Lexical Scanning |
| Apr 20 | Flex documentation (On Unix, type "info flex"; or see the O'Reilly Book online) |
Scanning, not by hand | |
| Apr 23 | Sebesta 4.3-4.5 | Hierarchical Parsing | |
| Apr 25 | Yacc documentation (On Unix, type "info yacc" or "info bison"; or see the O'Reilly Book online) |
Parsing, not by hand | |
| Apr 27 | catch up and review | ||
| Apr 30 | HW7 due; HW8 | The C preprocessor and C macros | |
| May 02 | Racket Guide to Macros | Macros in a no-syntax language | |
| May 04 | Hygienic macros | ||
| May 07 | Replacing patterns with macros | ||
| May 08 | HW8 due | make-up for Mar 2; catch up and review | |
| May 16 | 272 final exam, 10:30 AM-12:30 PM | ||