Instructor | J. Garrett Morris |
garrettm@ku.edu | |
Office | Eaton 2028 |
Office hours | TH 2:20-5:00 PM, and by appointment |
Course website | https://ittc.ku.edu/~garrett/eecs662s20/ https://piazza.com/ku/spring2020/eecs662 |
Lectures | TH 1:00-2:15, Learned 1136 |
The syllabus is available here.
This class is an introduction to the analysis, description, and interpretation of programming languages. We will ask questions like
To answer these questions, we will develop a vocabulary for discussing what languages (and programs written in them) do, and what they mean. This vocabulary will include ideas about:
Our primary means of exploring these ideas will be to build interpreters for concrete languages that demonstrate them. However, keep in mind: our goal is not to write interpreters, but rather to use them as formal artifacts to gain understanding of the languages they interpret.
In ABET-speak, the high level objectives for this course are that students should be able to:
Homework and solutions are no longer available.
Number | Due date | Assignment | Sample solutions |
0 | February 5, 1:00 PM | HW0.hs | HW0.hs |
1 | February 27, 1:00 PM | HW1.hs | HW1.hs |
2 | March 31, 1:00 PM | HW2.hs | HW2.hs |
3 | April 16, 1:00 PM | HW3.hs | HW3.hs |
4 | May 7, 1:00 PM | HW4.hs |
Number | Date | Blank | Solutions |
1 | 2/4 | Q1.pdf | Q1ans.pdf |
2 | 2/18 | Q2.pdf | Q2ans.pdf |
3 | 2/23 | Q3.pdf | Q3ans.pdf |
4 | 3/31 | Q4.pdf | Q4ans.pdf |
5 | 4/7 | Q5.pdf | Q5ans.pdf |
6 | 4/14 | Q6.pdf | Q6ans.pdf |
7 | 4/21 | Q7.pdf | Q7ans.pdf |
8 | 4/28 | Q8.pdf | Q8ans.pdf |
9 | 5/5 | Q9.pdf | Q9ans.pdf |
date | topics | notes |
1/21 |
Introduction and administrivia What is a programming language? |
day1.pdf Homework 0 released |
1/23 | No class—instructor away | |
1/28 |
Multiple notions of evaluation Properties of evaluation |
day2.pdf |
1/30 | From formal descriptions to language implementations | Day3.hs |
2/4 |
Booleans Simple type systems |
day3.pdf |
2/6 |
Pairs Implementing non-total evaluation |
Homework 1 released Day5.hs |
2/11 |
Let expressions and names Substitution α-equivalence |
day4.pdf |
2/13 | Movie night! | Matt Might on error |
2/18 |
Evaluation order Substitution and typing |
day5.pdf |
2/20 | Environments, evaluation, and typing | day6.pdf |
2/25 | λ-calculus | day7.pdf |
2/27 |
λ-calculus and environments Typing functions |
Homework 2 released day8.pdf |
3/3 | Recursion | Notes on recursion |
3/5 |
Basic proof theory The Curry-Howard correspondence |
day9.pdf |
3/10 3/12 |
No class—spring break | |
3/17 3/19 |
No class—quarantine | Midterm review (solutions) |
3/24 | Midterm (covering material up to spring break) | (solutions) |
3/26 |
Introducing effects Readers Effects, functions, and evaluation |
day11.pdf |
3/31 |
Accumulators Order of operations |
day12.pdf |
4/2 |
Non-determinism Combining effects |
Homework 3 released day13.pdf |
4/7 4/9 |
Type and effect systems |
day14.pdf day15.pdf |
4/14 4/16 |
Subtyping | subtyping.html |
4/21 4/23 |
Implicit parametric polymorphism |
Homework 4 released day17.pdf day18.pdf |
4/28 4/30 |
Explicit parametric polymorphism | day19.pdf Final review (solutions) |