eecs 662: programming languages
fall 2017

essentials | announcements | homework | schedule

essentials

Instructor Dr. J. Garrett Morris
Email garrettm@ku.edu
Office Eaton 2028
Office hours MW 1—3 PM, and by appointment
Course websites http://ittc.ku.edu/~garrett/eecs662f17/
http://piazza.com/ku/fall2017/eecs662/home
Lectures Learned Hall 3151, 8:00—8:50 AM

syllabus

The syllabus is available here

announcements

9/20 The homework 1 due date has been extended to 9/29.
9/19 Access to the solutions is now limited to students in the course. If you are enrolled in the course, you should be able to access the solutions using your KU ID. Please let me know if you have trouble.
9/11

There will be a couple of Haskell labs this week and next week, scheduled as follows: These are optional sessions to review Haskell programming (and functional programming in general), and to answer any questions you may have.

Wednesday, 9/13 5:00-7:00 PM Eaton 1005C Lab1.hs
Thursdsay, 9/14 5:00-7:00 PM Eaton 1005C Lab2.hs
Tuesday, 9/19 5:00-7:00 PM Eaton 1005C
Wednesday, 9/20 5:00-7:00 PM Eaton 1005C

If you would like to come to one of the labs, but cannot make any of the scheduled times, please get in touch (soon).

9/6 Homework 0 solutions and homework 1 posted.
9/1 I'll be away from the 1st through the 10th of Septembers. Lectures on 9/6 and 9/8 will be delivered by Adam Petz.
8/23 Homework 0 has been updated: Aces in Blackjack are worth either 1 or 11 points, not either 1 or 10 points.
8/21 Homework 0 is posted!
8/19 There will be no office hours on Monday, August 21st. Office hours will resume as scheduled on Wednesday, August 23rd.

homework

Number Due date Download Sample solutions
0 Friday, September 1st, 8:00 AM Hw0.hs Hw0Solutions.hs
1 Friday, September 29th, 8:00 AM Specification
Distribution

schedule

date topics notes other
8/21 Introductions
Course objectives
Homework 0 out
8/23 Arithmetic expressions and their interpretation
Desugaring
PLIH: "Arithemetic expression" and "Simple elaborator"
Arith0.hs
8/25 Adding Booleans
Type errors and type checking
Monadic notation for Maybe
PLIH: "Adding Booleans" and "Monadic redux"
Arith1.hs
8/28 Adding let
Substitution
Call-by-name and call-by-value (without calls yet)
Formal notation for evaluation
PLIH: "Formal systems" and "Adding identifiers"
Arith2.hs
8/30 Untyped functions
Typing let
PLIH: no readings.
Ulc0.hs
9/1 Types for functions
PLIH: "Function types"
Stlc0.hs
9/6 Substitutions and environments Homework 1 out
9/8 Substitutions and environments
Products
PLIH: Adding environments
9/11 Products
Currying and uncurrying
Higher-order functions
PLIH: Currying
Stlc1.hs
Notes on currying
9/13 Static and dynamic scope
PLIH: Scoping
Blc.hs
9/15 Recursion and fixed points
Recapitulate STLC
PLIH: "Untyped recursion", "Typed recursion"
Stlc2.hs
9/18 Exceptions Lcex.hs
9/20 The unit type (see Stlc3.hs)
State as an effect
Stlc3.hs
Lcst0.hs
9/22 State as an effect (see Lcst1.hs)
Generalizing effects (see Lcst2.hs)
Lcst1.hs
Lcst2.hs
9/25 Generalizing effects
Type classes
Lcex1.hs
Classes.hs
Lcst3.hs