λ CS 251 : Principles of Programming Languages .

Staff / Hours

Instructor: Lyn Turbak, SCI E126
Drop-in hours: (see the drop-ins calendar for the most up-to-date info):

Tutor Drop-ins (start the week of Sep 09)
(see the drop-ins calendar for the most up-to-date info)

Schedule (jump to now)

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.

TueWedFri
04 September
  • 251 class starts today
  • big ideas; syntax, dynamic and static semantics, pragmatics [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)
  • PL dimensions [slides]
  • start Racket expressions and declarations; big-step semantics [slides 1-24]
  • PS0 due
  • PS1 out; syntax, comparing languages, Racket, big-step vs. small-step semantics.
  • Assign: PS1 Evaluating Languages
07 September
11 September 12 September 14 September
18 September
  • Divide/conquer/glue list recursion in Racket [slides 1-23]
  • PS1 hardcopy solutions distributed
19 September
  • local binding (let, let*, letrec), countours, and scope [slides]
21 September
  • first-class functions [slides]
  • PS2 due
  • PS3 out; Racket lists and list recursion
  • Assign: PS3 Racket List Recursion
25 September
  • higher-order list operations; map, filter [slides 1-12]
  • PS2 hardcopy solutions distributed
26 September
  • higher-order list operations; foldr, foldr-ternop [slides 13-23, solns will be posted]
28 September
  • iteration; tail recursion, foldl [slides 1-31, solns will be posted]
  • PS3 due
  • PS4 out; first-class functions and higher-order list operations
  • Assign: PS4 First-Class Fun
02 October
  • iteration wrap-up; iterate, iterat-apply, generate, generate-apply [slides 41-51, solns will be posted]
  • PS3 hardcopy solutions distributed
03 October 05 October
  • s-expression trees; Racket syntax as s-expression [slides 10-16]
  • PS4 due
  • PS5 out; iteration and tail recursion
  • Assign: PS5 Iterate Until Done
09 October Fall Break
  • No class today
10 October 12 October
16 October 17 October
  • Finish introduction to SML, including tuples, tupled vs. curried arguments including tail recursion, `let`, scoping gotchas, tuple pattern matching [slides (w/blanks) 12-14, 26-30, solns will be posted]
  • PS5 due
  • PS6 out; composition, trees, Postfix
  • Assign: PS6 Practicing PostFix
19 October
23 October 24 October
  • Begin SML Sum-of-product datatypes; figures, options, lists [slides 1-9 w/blanks, solns will be posted]
26 October
  • Finish SML sum-of-product datatype; binary trees, binary search trees [slides 10-23 w/blanks, solns will be posted]
  • PS6 due
  • PS7 out; SML programming, 2-3-trees
  • Assign: PS7 Resistance is Futile. You Will Be SMLated.
30 October Tanner Conference
  • No class today
31 October
  • SML Modules and abstract datatypes 1; mathlib, rational numbers, signature matching[slides 1-16]
02 November
  • SML Modules and abstract datatypes 2; sets, intro to PS8 [slides 17-31]
06 November
  • Metaprogramming; interpreters, compilers, and language derivations [slides 1-17]
07 November
  • Metaprogramming; language derivations exercise; bootstrapping [slides 18-28 w/blanks, solns will be posted]
  • PS7 due
  • PS8 out; ADTs, modules, sets, Backus paper
  • Assign: PS8 Set Yourself Free
09 November
  • PostFix interpreter in SML; error handling in SML; s-expressions in SML [slides 1-24]
13 November
  • Discuss PS8 FunSet representation
  • Introduction to Intex; intex intepreter; static arg checking [slides 1-17 w/blanks, solns will be posted]
14 November 16 November
  • Discuss common confusions in PS9 metalanguage derivations.
  • Bindex naming features; free variables, environments, evaluation, Bindex interpreter [slides 1-18 w/blanks, solutions will be posted]
  • PS8 due
  • PS9 out; metaprogramming, PostFix-in-SML, Intex
  • Assign: PS9 I Never Metalanguage I Didn't Like
20 November 21 November Thanksgiving Break
  • No class
23 November Thanksgiving Break
  • No class
27 November
  • Valex; multiple values, conditionals, dynamic typing; desugaring [slides w/blanks, solns will be posted]
28 November
  • HOFL = Valex + first-class functions; environments model of evaluation; closures. [F17 notes]
  • PS9 due
  • PS10 out; mini-FP interpreter, Bindex, Valex
  • Assign: PS10 Open to Interpretation
30 November
  • more HOFL; dynamic vs. static scope [F17 notes]
04 December
  • HOILEC = HOFL + state
05 December
  • laziness and memoization
  • PS10 due
  • PS11 out; desugaring, HOFL, HOILEC (only PS11 solo problem is required; PS11 regular problems are completely optional extra credit problems)
  • Assign: PS11 A Hofl Lot
07 December
  • continuations, non-local exits, and exceptions
11 December
  • object-oriented programming (OOP) with closures
  • PS11 solo problem due
12 December Reading Period 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