λ CS 251 : Principles of Programming Languages .

Staff / Hours

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

Tutors:: Hope Anderson, Ngina Kariuki, Sherry Xu, Yige Zhu

Tutor Drop-ins (start the week of Feb 04)
(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 Fall 2018; in many cases these will be unchanged or edited lightly for this semester.

MonWedThu
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]
  • Start local binding with let; contours, scope [slides]
  • PS2 hardcopy solutions distributed
20 February
  • Finish local binding (let*, letrec)[slides]
21 February
  • first-class functions, nameable, passable, returnable, storable, creatable in any context [slides]
25 February
  • higher-order list functions, map , filter [slides 1-12]
  • PS3 dueish
  • PS4 out; first-class functions and higher-order list operations
  • Assign: PS4 First-Class Fun
27 February
  • more higher-order list functions, foldr, foldr-ternop [slides 13-23]
  • PS3 hardcopy solutions distributed
28 February
04 March
  • foldl, tail recursion review; iterate and iterate-apply [slides 25-34]
  • PS4 dueish
  • PS5 out; iteration and tail recursion
  • Assign: PS5 Iterate Until Done
06 March
  • iteration wrap-up; genlist-apply [slides 35-51]
  • PS4 hardcopy solutions distributed
07 March
  • symbols and quoted lists; s-expression trees; processing s-expression trees; processing Racket-expressions-as-s-expressions [slides 1-16]
11 March 13 March 14 March
18 March
  • BEFORE LECTURE TODAY; install Virtual Box VM and run SML installer on it
  • Begin introduction to SML, including booleans, conditionals, recursion, tuples, `use` for loading programs from files, recursive `fib` exercise, reading error messages [slides (w/blanks) 1-26]
  • Practical SML programming in SML in csenv and Emacs using `.sml` and `*sml*` buffers (rather than terminal) [slides 19-20]
  • PS6 dueish
  • PS7 out; PostLoop, Backus paper, introductory SML programming
  • Assign: PS7 Resistance is Futile. You Will Be SMLated.
20 March
  • Finish introduction to SML, including tuples, tupled vs. curried arguments, higher-order functions, `sumUpTo/makeLinear' exercise, function composition, tail recursion, `let`, scoping gotchas, `fun` vs. `and` (mutually recursive functions), and tuple pattern matching [slides (w/blanks) 23-39]
  • GNU Emacs Reference Card handed out
21 March Spring Break
  • No class today
25 March Spring Break
  • No class today
27 March Spring Break
  • No class today
28 March Spring Break
  • No class today
01 April 03 April
  • Start SML Sum-of-product datatypes; figures, options, lists, binary trees [slides 1-18/blanks]
04 April
  • Finish SML sum-of-product datatype; binary search trees [slides 19-23 w/blanks]
  • Discuss PS8 Problem 2 on 2-3 trees
  • PS7 dueish (Fri)
  • PS8 out (Fri); 2-3 trees, sets
  • Assign: PS8 Set Yourself Free
08 April
  • Start SML Modules and abstract datatypes 1; mathlib, rational numbers, signature matching [slides 1-16]
  • PS7 hardcopy solutions distributed
10 April
  • SML Modules and abstract datatypes 2; sets [slides 17-31]
  • Discuss PS8 Problems 3 (FunSet) and 4 (Operation Tree Set)
11 April
  • Metaprogramming; interpreters, compilers, and language derivations; language derivations exercise [slides 1-19]
15 April Patriots Day
  • No class today
17 April
  • Metaprogramming; bootstrapping [slides 20-30]
  • PostFix in SML; abstract syntax slides 1-4
  • PS8 due
  • PS9 out; metaprogramming, PostFix-in-SML, Intex
  • Assign: PS9 I Never Metalanguage I Didn't Like
18 April
22 April
  • Introduction to Intex; intex interpreter; static arg checking [slides 1-16 w/blanks]
  • PS8 hardcopy solutions distributed
24 April 25 April
  • Bindex free variable calculation; environments; Bindex interpreter; Sigmex = Bindex + sigma [slides 12-26 w/blanks, solns]
  • PS9 dueish (Fri)
  • PS10 out (Fri); mini-FP interpreter (solo), Bindex, Valex
  • Assign: PS10 Open to Interpretation
29 April
  • Valex; multiple types of values, conditionals, dynamic typing [slides w/blanks]
01 May Ruhlman Conference
  • No class today
02 May
  • Valex; desugaring [slides w/blanks]
  • introduction to HOFL = Valex + first-class functions; [handout]
  • PS10 dueish (Fri)
  • PS11 out (Fri); desugaring in HOFL, HOFL closures, HOILEC, Compex
  • Assign: PS10 Open to Interpretation
06 May
  • HOFL; environment model of evaluation; closures; static vs dynamic scope [handout]
08 May
  • HOILEC; state and closures
  • PS11 out; desugaring, HOFL (All PS11 problems are completely optional extra credit problems)
  • Assign: PS11 A Hofl Lot
09 May
  • object-oriented programming (OOP) with closures
  • PS11 dueish (Fri)
13 May Reading Period 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