λ CS 251 : Principles of Programming Languages .

Staff / Hours

Instructor: Lyn Turbak, SCI E126
Drop-in hours (in Lyn's office = SCI E126): (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 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
  • No class today
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
  • No class today
31 October 02 November
06 November 07 November 09 November
13 November
  • Finish SML sum-of-product datatype; binary search trees [slides 19-23 w/blanks, , solns]
  • Discuss PS8 Problem 1 on 2-3 trees
  • Start SML Modules and abstract datatypes 1; mathlib, rational numbers, signature matching[slides 1-16]
14 November
  • SML Modules and abstract datatypes 2; sets, intro to PS8 [slides 17-31]
  • Discuss PS8 FunSet representation
16 November
  • Metaprogramming; interpreters, compilers, and language derivations; language derivations exercise [slides 1-17]
20 November
  • Metaprogramming; bootstrapping [slides 18-28 w/blanks, solns will be posted]
  • PostFix interpreter in SML; error handling in SML; s-expressions in SML [slides 1-24]
  • PS8 due
  • PS9 out; metaprogramming, PostFix-in-SML, Intex
  • Assign: PS9 I Never Metalanguage I Didn't Like
21 November Thanksgiving Break
  • No class
23 November Thanksgiving Break
  • No class
27 November
  • Discuss common confusions in PS9 metalanguage derivations.
  • Introduction to Intex; intex intepreter; static arg checking [slides 1-17 w/blanks, solns will be posted]
28 November 30 November
  • Bindex naming features; free variables, environments, evaluation, Bindex interpreter [slides 1-18 w/blanks, solutions will be posted]
  • PS9 due
  • PS10 out; mini-FP interpreter, Bindex, Valex
  • Assign: PS10 Open to Interpretation
04 December 05 December
  • Valex; multiple values, conditionals, dynamic typing; desugaring [slides w/blanks, solns will be posted]
07 December
  • HOFL = Valex + first-class functions; environments model of evaluation; closures. [F17 notes]
  • PS10 due
  • PS11 out; desugaring, HOFL, HOILEC (only PS11 solo problem is required; PS11 regular problems are completely optional extra credit problems)
11 December
  • Last day of classes
  • HOILEC = HOFL + state
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