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: The intro sequence (52/62 or 60/70) and 81. This course is required for CS majors. Please see the syllabus for more information.
But don’t listen to me… what do other students say?
“Useful at parties!”
“TYPES TYPES TYPES ARE THE ANSWER ALWAYS!”
“Beauty matters, and as a corollary, correctness is preferable to efficiency. It was enriching to realize the benefits of beauty for its own sake—it’s a big part of why I do CS.”
“[I now have] a better appreciation for CS/computation foundations… λ and π calculi are so cool! Church encodings are mindblowing.”
“Haskell is the one true programming language.”
“Haskell! #Types4Life”
“I feel like I have a larger ‘arsenal’ of tools/approaches to use for tackling new problems.”
“This notation is pretentious.”
“Haskell is a cool language and people will think you’re cool for knowing it.”
“Mind-bending! … Abstraction! PL really takes it to the limit.”
“Haskell: it’s dope. Higher order functions: super useful, plus it shows people you’re cool.”
Homeworks
Submit homeworks at the new submission site. You may have to enroll in the course there.
I urge you to use the Haskell documentation as well as the library documentation in Hackage and Hoogle.
Homework | Posted | Due | |
---|---|---|---|
8.0 | Code review (in class!) | 2017-04-24 | 2017-05-01 |
6.0 | Untyped lambda calculus | 2017-04-03 | 2017-04-16 |
5.0 | Monads | 2017-03-21 | 2017-04-02 |
4.0 | Parsing | 2017-02-21 | 2017-03-05 |
3.0 | The “While” programming language | 2017-02-12 | 2017-02-19 |
2.0 | Type classes | 2017-01-30 | 2017-02-12 |
1.0 | Haskell warmup | 2017-01-18 | 2017-01-29 |
Worksheets are due at the beginning of a class day.
Worksheets | Due |
---|---|
Higher-order functions | Monday, Feb. 06 |
Applicative | Monday, Feb. 27 |
Lambda calculus | Wednesday, Apr. 12 |
Types | Wednesday, Apr. 26th |
Office hours
Day | Time | Location | |
---|---|---|---|
Prof. Michael Greenberg | Tuesday | 3–5pm | Edmunds 225 |
Hannah Christenson and/or Zach Hauser | Thursday | 7–9pm | Edmunds 227 |
Zach Hauser and/or Hannah Christenson | Saturday | 2–4pm | Edmunds 227 |
Lectures
Date | Lecture | Notes | |
---|---|---|---|
1 | Jan. 18 | Introduction, learning Haskell | |
2 | Jan. 23 | Introduction, continued | Hutton, 1–3 |
3 | Jan. 25 | Higher-order functions | HW 1 due Sunday; Hutton 4, 6, 7 |
4 | Jan. 30 | Our first interpreter; type classes | Hutton 8 |
5 | Feb. 01 | More type classes | |
6 | Feb. 06 | Type classes | |
7 | Feb. 08 | Functor; WhileNZ in math | Higher-order functions worksheet due in class; HW 2 due Sunday; Hutton 12.1 |
8 | Feb. 13 | Functor; WhileNZ in code | |
9 | Feb. 15 | Applicative | HW 3 due on Sunday; Hutton 12.2 |
10 | Feb. 20 | Hands-on Applicative | |
11 | Feb. 22 | Parsing with Applicative | |
12 | Feb. 27 | More parsing with Applicative | Applicative worksheet due in class; Hutton 12, 13 |
13 | Mar. 01 | Moving towards Monads | HW 4 due on Sunday; Hutton 10, 11 |
14 | Mar. 06 | Review | |
15 | Mar. 08 | Midterm in class | |
Mar. 13 | Spring break | ||
Mar. 15 | Spring break | ||
Mar. 20 | No class | ||
16 | Mar. 22 | Monads | |
17 | Mar. 27 | QuickCheck | |
18 | Mar. 29 | Lambda calculus: definition, encodings (definitions sheet) | HW 5 due on Sunday |
19 | Apr. 03 | Lambda calculus: evaluation and step functions, nontermination | |
20 | Apr. 05 | Lambda calculus catch-up | HW 6 checkpoint 1 on Sunday |
21 | Apr. 10 | Lambda calculus: recursion and the Y combinator | |
22 | Apr. 12 | Types for the lambda calculus | Lambda calculus worksheet due in class; HW 6 checkpoint 2 (final due date!) on Sunday |
23 | Apr. 17 | More types | |
24 | Apr. 19 | Tyyyyyyypes | HW 7 checkpoint 1 on Sunday |
25 | Apr. 24 | Recursion | |
26 | Apr. 26 | Code review | Types worksheet due in class |
27 | May 01 | Code review | |
28 | May 03 | Review | HW 7 checkpoint 2 (final due date!) at 10pm |
May 11 | Final exam at 2pm in Edmunds 114 |