eecs 662: programming languages
spring 2020

essentials | homework | quiz solutions | schedule

essentials

Instructor J. Garrett Morris
Email 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

syllabus

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

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

schedule

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
day4.pdf
2/6 Pairs
Implementing non-total evaluation
Homework 1 released
2/11 Let expressions and names
Substitution
α-equivalence
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
3/10
3/12
No class—spring break
3/17 Introducing effects
Readers
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
Subsumptions
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