Here is a tentative calendar for the semester. The future and recent past, as recorded here, are subject to revision at any time. See the long-term schedule on the syllabus for the big picture. Future slide links may be to slides from Spring 2018; in many cases these will be unchanged or edited lightly for this semester.
Tue | Wed | Fri |
---|
04 September - 251 class starts today
- big ideas; syntax, dynamic semantics [slides]
- quick interactive session with Racket
- PS0 out; get to know you, study administrivia, install Racket
- Assign: PS0 Introductions
| 05 September - course administrivia (see syllabus)
- more big ideas; static semantics, pragmatics (App Inventor raffle) [slides]
- PS0 due
- PS1 out; syntax, comparing languages, Racket, big-step vs. small-step semantics.
- Assign: PS1 Evaluating Languages
| 07 September - big idea wrap-up; PL dimensions [slides]
- start Racket expressions and declarations; big-step semantics [slides 1-24]
|
11 September - more Racket expressions and declarations; conditionals [slides 1-24]
| 12 September - more Racket expressions and declarations; environments; start small-step semantics [slides 1-24]
| 14 September - wrap-up Racket expressions and declarations; small-step semantics [slides 1-24]
- PS1 due
- PS2 out; semantics, Racket recursion, Racket lambda semantics and stack depth
- Assign: PS2 Antics with Semantics
|
18 September - Racket functions and substitution model; small-step substitution model [slides 1-15]
- PS1 hardcopy solutions distributed
| 19 September - Racket functions and substitution model; big-step substitution model; recursion [slides 1-15]
- Racket pairs and lists; cons [slides 1-30]
| 21 September |
25 September - Begin divide/conquer/glue list recursion in Racket; [slides 1-23]
| 26 September - PS2 hardcopy solutions distributed
- More divide/conquer/glue list recursion in Racket; wrap up snoc, my-append, append-all, reverse [slides 1-23]
- local binding with
let ; contours, scope [slides]
| 28 September - more local binding (
let* , letrec )[slides] - PS3 dueish (recommended)
- PS4 out; first-class functions and higher-order list operations
- Assign: PS4 First-Class Fun
|
02 October - summarize Racket kernel forms (lambda, if, letrec, define) and sugar (and, or, let, let*, define sugar)
- first-class functions, nameable, passable, returnable [slides]
- PS3 dueish (grace period ends)
| 03 October - first-class functions, storable and creatable in any context; [slides]
- higher-order list functions, map , filter [slides 1-12, solns]
| 05 October - PS3 hardcopy solutions distributed
- more higher-order list functions, foldr, foldr-ternop [slides 13-23, solns]
- PS4 dueish (recommended)
|
09 October Fall Break | 10 October | 12 October |
16 October - more iteration; iterate revisited, iterate-apply; genlist [slides 35-44, solns]
- PS4 hardcopy solutions distributed
| 17 October | 19 October |
23 October | 24 October | 26 October |
30 October Tanner Conference | 31 October | 02 November |
06 November | 07 November | 09 November |
13 November | 14 November - Start SML Modules and abstract datatypes 1; mathlib, rational numbers, signature matching [slides 1-16]
| 16 November |
20 November - Metaprogramming; interpreters, compilers, and language derivations; language derivations exercise [slides 1-19, solns]
- PS8 due
| 21 November Thanksgiving Break | 23 November Thanksgiving Break |
27 November | 28 November | 30 November |
04 December | 05 December | 07 December |
11 December - Last day of classes
- HOFL = Valex + first-class functions; environments model of evaluation; closures. [handout]
- PS10 due
| 12 December Reading Period - PS11 out; desugaring, HOFL (All PS11 problems are completely optional extra credit problems)
- Assign: PS11 A Hofl Lot
| 14 December Final Exams |
18 December Final Exams | 19 December Final Exams - All leftover CS251 work due by end of day on Thu. Dec. 20
| 21 December |