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 Fall 2018; in many cases these will be unchanged or edited lightly for this semester.
Mon | Wed | Thu |
---|
28 January - 251 class starts today
- start big ideas; what is this course about?; PL paradigms and dimensions; why you want to take this course [slides 1-14, solns]
- quick administrivia (see syllabus); more on Wed.
- quick interactive session with Racket
- PL parts overview; syntax, start dynamic semantics; first dynamic semantics exercise ([slides 15-19])
- PS0 out; get to know you, study administrivia, install Racket
- PS1 out; syntax, comparing languages, Racket, big-step vs. small-step semantics.
- Assign: PS0 Introductions
- Assign: PS1 Evaluating Languages
| 30 January - more PL parts; remaining dynamic semantics exercises [slides 20-21, solns]
- course administrivia (see syllabus)
- discussion of investigating a section afternoon CS251 section
- PS0 due
| 31 January |
04 February | 06 February - continue Racket expressions and declarations; big-step semantics exercise; definitions, small--step semantics [slides 21-44, solns]
| 07 February |
11 February - wrap up functions; recursion; order of growth in time and space [slides 16-26, solns]
- PS1 hardcopy solutions distributed
| 13 February | 14 February |
18 February Presidents Day - (Monday schedule for Tue. Feb 19)
- Finish divide/conquer/glue list recursion in Racket [slides 14-23, solns]
- PS2 hardcopy solutions distributed
| 20 February | 21 February |
25 February - first-class functions, nameable, passable, returnable, storable, creatable in any context [slides, solns]
- PS3 dueish
| 27 February | 28 February - more higher-order list functions, foldr, foldr-ternop [slides 15-23, solns]
- PS3 hardcopy solutions distributed
|
04 March | 06 March | 07 March |
11 March - metaprogramming appetizer 1
- processing s-expression trees; first metalanguage examples = processing Racket-expressions-as-s-expressions [slides 11-16, solns]
| 13 March | 14 March |
18 March | 20 March | 21 March Spring Break |
25 March Spring Break | 27 March Spring Break | 28 March Spring Break |
01 April - Review introduction to SML slides covered before break; new material includes tupled vs. curried arguments, higher-order functions, `sumUpTo/makeLinear' exercise [slides (w/blanks) 29-31, solns]
| 03 April - Finish introduction to SML; function composition, tail recursion, scoping gotchas, `fun` vs. `and` (mutually recursive functions), `fib_iter` exercise, `let`, and more tuple pattern matching [slides (w/blanks) 32-40, solns]
- Start list processing in SML; lists, list operations [slides (w/blanks) 1-6, solns]
- PS6 dueish
- PS7 out; PostLoop, Backus paper, introductory SML programming
- Assign: PS7 Resistance is Futile. You Will Be SMLated.
| 04 April - More list processing in SML; pattern matching on lists; list accumulation, `map`/`filter`/`foldr` and friends in SML [slides (w/blanks) 7-16, solns]
|
08 April | 10 April - Finish SML sum-of-product datatypes; binary trees, binary search trees [slides 10-23 w/blanks, solns]
- Discuss upcoming PS8 Problem 2 on 2-3 trees
- PS6 hardcopy solutions distributed
- PS7 dueish
| 11 April |
15 April Patriots Day | 17 April - Finish SML modules and abstract datatypes; sets [slides 23-31]
- Discuss PS8 Problems 3 (FunSet) and 4 (Operation Tree Set)
- PS7 hardcopy solutions distributed
| 18 April - Metaprogramming; interpreters, compilers, and language derivations; language derivations exercise [slides 1-19]
|
22 April | 24 April | 25 April - Finish PostFix in SML; s-expressions in SML [slides 14-24
- Introduction to Intex; sum-of-product abstract syntax; intex interpreter; static arg checking [slides 1-16 w/blanks]
|
29 April | 01 May Ruhlman Conference | 02 May |
06 May | 08 May | 09 May - HOFL = Valex + first-class functions; static vs. dynamic scope; environment model of evaluation; closures [handout]
- PS9 hardcopy solutions available
- PS10 dueish (Fri)
|
13 May Reading Period - PS10 hardcopy solutions available
| 15 May Final Exams | 16 May Final Exams |
20 May Final Exams - All leftover CS251 work due by end of day on Tue. May 21
| 22 May | 23 May |