CS558 Programming Languages Fall 2023

Instructor: Andrew Tolmach

Teaching Assistant: Katherine Philip

Course Information

Exams

Schedule

Subject to change!

Date Lab Due Reading Lecture Topics Self-study
Sep 26 Scott 1 Introduction; High-level vs. low-level languages; Stack machines (pdf) (recording) questions answers
Sep 28 Scott 2.1,6.1 Concrete and abstract syntax; Grammars; Expressions (pdf) (recording) questions answers
Oct 3 Lab 1 Scott 6.2-5 Imperative languages; Structured programming (pdf) (recording) (additional lecture covering slides 19 onwards) questions answers
Oct 5 Gordon, pp. 7-27 Semantics; Axiomatic semantics (pdf) (recording) questions answers
Oct 10 Lab 2 Scott 3.1-3,3.5 Binding; Scope (pdf) (recording) [slides for lecture 3a are not shared properly, but you can follow along using the pdf] questions answers
Oct 12 (none) Memory; Large values; Equality (pdf) (recording) questions answers
Oct 17 Lab 3 Winskel 2.1-5 Operational Semantics (pdf) (recording) questions answers
Oct 19 Scott 9.1-3, 6.6 Procedures and the stack; Calling Conventions (pdf) (recording) questions answers
Oct 24 Lab 4 (sample midterm questions) Review for Midterm (recording) questions answers
Oct 26 Midterm Exam -- in class
Oct 31 (none) Calling Conventions [continued]; Recursion (pdf) (recording) questions answers
Nov 2 Scott 3.6-7, Scott 11 Functional programming; First-class functions (pdf) [updated Nov 6 @ 2pm] (recording) questions answers
Nov 7 Lab 5 (none) Closures; Continuations (pdf) (recording) questions answers
Nov 9 Scott 7 Type systems; Type checking; Type equivalence (pdf) (recording) (additional lecture coversing slides 16 onwards) questions answers
Nov 14 Lab 6 (none) Polymorphism; Type inference (pdf) (handout with slide 8 method details) (recording) questions answers
Nov 16 Scott 8 Composite types (pdf) (recording) TypesInHaskell.hs TypesInHaskell_with_solutions.hs questions answers
Nov 21 Lab 7 (none) Modules; Abstract data types (pdf) (recording) (no study questions)
Nov 23 Thankgiving Holiday - no class
Nov 28 Scott 10 Object-oriented languages (pdf) (recording) questions answers
Nov 30 Lab 8 (sample final questions) Review and catch-up (recording) questions [updated Nov. 30 8:05pm] answers
Dec 5 Final exam 5:30-7:20 pm

Books

Additional Required Reading

Scala Language Resources

We will be using Scala 2.12 in the labs for this course. The latest version of Scala 2 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. Scala 3 is a significantly different language, which you should not try to use for this course.