From the course catalog:

A thorough examination of issues and features in language design and implementation, including language-provided data structuring and data-typing, modularity, scoping, inheritance and concurrency. Compilation and run-time issues. Introduction to formal semantics.

Prerequisites: CSCI052 PO and CSCI062 PO (or the CMC equivalents); or CSCI060 HM and CSCI070 HM. This course is required for CS majors. Please see the syllabus for more information.

Homeworks

I urge you to use the Haskell documentation as well as the library documentation in Hackage and Hoogle.

Homework Posted Due
10 Concurrency 2015-12-04 2015-12-12
9 Using monads in anger 2015-11-20 2015-12-02
8 Type classes 2015-11-09 2015-11-15
7 Recursive types and algebraic data types 2015-10-23 2015-11-03
6 Types and type checking 2015-10-09 2015-10-18
5 Parsing 2015-10-01 2015-10-11
4 Lambda calculus interpreter 2015-09-26 2015-10-02
3 Working with semantics 2015-09-18 2015-09-24
2 Haskell training, part II; semantics 2015-09-11 2015-09-17
1 Haskell training, part I 2015-07-27 2015-09-10

Office hours

Day Time Location
Joanna Finkelstein Monday 7–9pm Edmunds 227
Joshua Landgraf Tuesday 7–9pm Edmunds 227
Ryan Luo Wednesday 7–9pm Edmunds 227
Prof. Michael Greenberg Thursday 1–4pm Edmunds 225

Lectures

In the readings, “M” refers to our textbook, Concepts in Programming Languages by John C. Mitchell.

Date Lecture Reading Notes
1 Sep 2 Introduction, learning Haskell
2 Sep 7 More Haskell M 1
3 Sep 9 Laziness, higher-order functions, and semantics M 2 HW 1 due next day
4 Sep 14 Folds; set theory M 4.4
5 Sep 16 Relations; semantics HW 2 due next day
6 Sep 21 Stack machines; the λ calculus M 4.2
7 Sep 23 Church encodings: functions all the way down HW 3 due next day
8 Sep 28 Call-by-value, call-by-name; interpreters
9 Sep 30 Extending λ calculus interpreters; lexing M 4.1 HW 4 due Friday
10 Oct 5 Parsing
11 Oct 7 Types M 6.1 and 6.2 HW 5 due Sunday
12 Oct 12 More types
13 Oct 14 Still more types HW 6 due Sunday
Oct 19 Fall recess
14 Oct 21 Extending type systems M 6.4
15 Oct 26 Review
Oct 28 In class midterm
16 Nov 2 More recursive types M 9 HW 7 due Tuesday
17 Nov 4 Type classes
18 Nov 9 Functor and Applicative
19 Nov 11 Parsing with Applicative M 8 HW 8 due Sunday
20 Nov 16 Monads
21 Nov 18 More monads
22 Nov 23 QuickCheck
Nov 25 Thanksgiving
23 Nov 30 Concurrency M 14
24 Dec 2 Software transactional memory Composable Memory Transactions HW 9 due
25 Dec 7 π Calculus Threads Cannot be Implemented as a Library
26 Dec 9 Discussion and review HW 10 due on Sunday
Dec 16 Final exam at 2pm