eecs 662: programming languages
spring 2020

essentials | homework | quiz solutions | schedule


Instructor J. Garrett Morris
Office Eaton 2028
Office hours TH 2:20-5:00 PM, and by appointment
Course website
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:


You will need to log in with your KU ID to access homework assignments and solutions.

Number Due date Assignment Sample solutions
0 February 5, 1:00 PM HW0.hs
1 February 27, 1:00 PM HW1.hs
2 March 26, 1:00 PM
3 April 16, 1:00 PM
4 May 7, 1:00 PM

quiz solutions

Number Date Blank Solutions
1 2/4 Q1.pdf Q1ans.pdf


date topics notes
1/21 Introduction and administrivia
What is a programming language?
Homework 0 released
1/23 No class—instructor away
1/28 Multiple notions of evaluation
Properties of evaluation
1/30 From formal descriptions to language implementations Day3.hs
2/4 Booleans
Simple type systems
2/6 Pairs
Implementing non-total evaluation
Homework 1 released
2/11 Let expressions and names
2/13 Substitution (again)
Eager and lazy evaluation
2/18 Evaluation
Environments and safety
2/20 λ-calculus
2/25 λ-calculus
2/27 Closures Homework 2 released
3/3 Recursion
3/5 Recursion
No class—spring break
3/17 Introducing effects
Effects, functions, and evaluation
3/19 Accumulators
Midterm review
3/24 Midterm (covering material up to spring break)
3/26 Movie night
3/31 Non-determinism
Combining effects
Homework 3 released
4/2 Type and effect systems
4/7 Type and effect systems
4/9 Subtyping
4/14 Subtyping and effects
4/16 Parametric polymorphism Homework 4 released
4/21 Parametric polymorphism
4/23 Qualified types
4/28 Effects and monads
5/7 Final review