CS558 Programming Languages Winter 2021

Instructor: Andrew Tolmach

Course Information



Subject to change!

Date Lab Due Reading Lecture Topics Self-study
Jan 5 Scott 1 Introduction; High-level vs. low-level languages; Stack machines (pdf) (recording) questions answers
Jan 7 Scott 2.1,6.1 Concrete and abstract syntax; Grammars; Expressions (pdf) (recording [missing first few minutes]) questions answers
Jan 12 Lab 1 Scott 6.2-5 Imperative languages; Structured programming (pdf) (recording) questions answers
Jan 14 Gordon, pp. 7-27 Semantics; Axiomatic semantics (pdf) (recording) questions answers
Jan 19 Lab 2 Scott 3.1-3,3.5 Binding; Scope (pdf) (recording) questions answers
Jan 21 (none) Memory; Large values; Equality (pdf) (recording) questions answers
Jan 26 Lab 3 Winskel 2.1-5 Operational Semantics (pdf) (recording) questions answers
Jan 28 Scott 9.1-3, Scott 6.6 Procedures and the stack; Calling conventions; Recursion (pdf) (recording) questions answers
Feb 2 Lab 4 (sample midterm questions) Review for Midterm (recording) questions answers
Feb 4 Midterm Exam: no class
Feb 9 Scott 9.4-5 [Completion of Jan 28 lecture](recording) questions answers
Feb 11 (Scott 9.4-5) Exceptions; Coroutines (pdf) (recording) questions answers
Feb 18 Lab 5 Scott 3.6-7, Scott 11 Functional programming; First-class functions (pdf) (recording) questions answers
Feb 18 continued (no live class; recording only) (none) Closures; Continuations (pdf) (recording) questions answers
Feb 23 Scott 7 Type systems; Type checking; Type equivalence (pdf) (recording) questions answers
Feb 25 Lab 6 (none) Polymorphism; Type inference (pdf) (handout with slide 8 method details) (recording) questions answers
Mar 2 Scott 8 Composite types (pdf) (recording) TypesInHaskell.hs TypesInHaskell_with_solutions.hs questions answers
Mar 4 Lab 7 (none) Modules; Abstract data types (pdf) (recording) (no study questions)
Mar 9 Scott 10 Object-oriented languages (pdf) questions answers
Mar 11 Lab 8 Review and catch-up (recording) questions answers
Mar 15-19 Final exam week


Additional Required Reading

Scala Language Resources

We will be using Scala 2.12 in the labs for this course. The lastest version is 2.13; this will probably also work OK, but it is safest to stick to 2.12 to make sure programs behave the same way for everyone.