λ 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-in:
(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.

TueWedFri
30 January
  • 251 class starts today
  • start big ideas; syntax, dynamic and static semantics [slides]
  • administrivia (see syllabus)
  • quick interactive session with Racket
  • PS0 out; get to know you, study administrivia, install Racket
  • Assign: PS0 Introductions
31 January
  • discussion of dynamic and static semantics examples [slides]
  • PS0 due
  • PS1 out; syntax, comparing languages, Racket, big-step vs. small-step semantics.
  • Assign: PS1 Evaluating Languages
02 February
06 February 07 February 09 February
13 February 14 February 16 February
20 February Monday Schedule
  • No class today
21 February
  • first-class functions [slides]
23 February
  • higher-order list operations; map, filter, foldr, foldr-ternop [F17 slides]
  • compositional program (if time permits)
  • PS3 due
  • PS4 out; first-class functions and higher-order list operations
27 February
  • iteration by tail recursion; the big idea [F17 slides]
28 February
  • iteration by tail recursion; iterate, foldl, genlist [F17 slides]
02 March
  • tree-shaped data with S-expressions [F17 slides]
  • PS4 due
  • PS5 out; iteration and tail recursion
06 March 07 March 09 March
13 March 14 March 16 March
  • Sum-of-product datatypes 1; figures, options, lists, start of binary trees [F17 slides w/blanks]
  • PS7 out; SML programming, 2-3-trees (Thu)
20 March
  • Sum-of-product datatypes 2; more binary trees, binary search trees [F17 slides w/blanks]
  • PS6 due;
21 March -TBA23 March Spring Break
  • No class
27 March Spring Break
  • No class
28 March Spring Break
  • No class
30 March Spring Break
  • No class
03 April
  • Modules and abstract datatypes 1; mathlib, rational numbers [F17 slides]
04 April
  • Modules and abstract datatypes 2; signature matching, sets [F17 slides]
06 April
  • Metaprogramming; interpreters, compilers, and language derivations [F17 slides]
  • PS7 due
  • PS8 out; ADTs, modules, sets, metaprogramming
10 April 11 April
  • Sexp representations of PostFix programs in SML [F17 slides]
13 April
  • Introduction to Intex; Intex intepreter [F17 slides]
  • PS8 due
  • PS9 out; PostFix-in-SML, Intex, Bindex
17 April
  • Intex intepreter review; static argument checking; Intex to Postfix compiler [F17 slides]
18 April 20 April
  • Extending Bindex; Sigmex = Bindex + sigma [F17 slides]
24 April
  • Valex; multiple values, conditionals, dynamic typing, and desugaring [F17 slides]
25 April
  • HOFL; environments and closures [F17 notes]
  • PS9 due
  • PS10 out; Valex, HOFL
27 April
  • HOFL; dynamic vs. static scope
01 May
  • HOFLEC; state and closures
02 May Ruhlman Conference
  • No class
04 May
  • HOFLEC; parameter passing
  • PS10 due
  • PS11 out; HOFLEC, laziness
08 May
  • laziness and memoization
09 May
  • object-oriented programming (OOP) with closures
11 May
  • Domain specific languages (DSLs)
  • PS11 due