Programming Languages

LectureAbbott Auditorium, Pancoe Building; MW 12:30—1:50

TextProgramming Languages: Application and Interpretation (First Edition)
by Krishnamurthi

How to Design Programs
by Felleisen, Findler, Flatt and Krishnamurthi

Essentials of Programming Languages
by Friedman and Wand

PiazzaClass (should link to EECS 321, Winter 2017)
Sign up

SoftwareHandin Status

quick-ref.rkt a quick reference to things Racket; open in DrRacket

T Lab, Tech F252
Version 6.7 of Racket is installed in /home/software/racket/bin/drracket on the linux side of the t-lab machines.

Vincent St-Amour
Office Hours: Tue 2-3pm, Kitchen near Ford 2-210

Spencer Florence
Office Hours: Thu 4-5pm, Kitchen near Ford 2-210

Week #DateTopicReadings
1Tuesday, January 3rd, 2017Introduction to PL & Racket;
lecture00.pdf lecture01.pdf
PLAI §1, §2
1Wednesday, January 4th, 2017Free, bound, and binding identifiers
1Due: Noon on Friday, January 6th, 2017HW 1: Setup and Finger Exercises
2Monday, January 9th, 2017Functions and Parsing
lecture03.pdf lecture04.pdf
2Wednesday, January 11th, 2017Deferred Substitution
2Due: Noon on Friday, January 13th, 2017HW 2: Free, bound, and binding identifiers
3Wednesday, January 18th, 2017Random testing
3Due: Noon on Friday, January 20th, 2017HW 3: Multi-arity functions
4Monday, January 23rd, 2017Higher-order functions
4Wednesday, January 25th, 2017Higher-order functions, Recursion
lecture07.pdf (cotdlecture08.pdf
PLAI §6, §9
4No Homework on Friday, January 27th, 2017 
5Monday, January 30th, 2017Recursion via mutation, State
lecture09.pdf lecture10.pdf
PLAI §10
5Wednesday, February 1st, 2017State
lecture10.pdf (cotd)
PLAI §12, §13
5Due: Noon on Friday, February 3rd, 2017HW 4: Deferred Substitution, if0, neg?, and mult
6Monday, February 6th, 2017State, Garbage Collection
lecture10.pdf (cotdlecture11.pdf
PLAI §12, §13
6Wednesday, February 8th, 2017Garbage Collection
lecture11.pdf (cotd)
PLAI §21
6Due: Noon on Friday, February 10th, 2017HW 5: Functions do more than you thought: natural numbers
7Monday, February 13th, 2017Garbage Collection
lecture11.pdf (cotdlecture12.pdf
7Wednesday, February 15th, 2017Garbage Collection
lecture12.pdf (cotd)
7Due: Noon on Friday, February 17th, 2017HW 6: State
8Monday, February 20th, 2017Garbage Collection
lecture12.pdf (cotd)
8Wednesday, February 22nd, 2017Types
lecture13.pdf lecture14.pdf
PLAI §24, §25
8No Homework on Friday, February 24th, 2017 
9Monday, February 27th, 2017Types
lecture15.pdf lecture16.pdf
9Wednesday, March 1st, 2017Types
lecture16.pdf (cotd)
PLAI §26, §28
9Due: Noon on Friday, March 3rd, 2017HW 7: Garbage Collection
10Monday, March 6th, 2017Types
PLAI §30
10Wednesday, March 8th, 2017Threads via Continuations
10Due: Noon on Friday, March 10th, 2017HW 8: Types
11Due: Noon on Friday, March 17th, 2017HW Ω: Threads via Continuations


You homework each week will be graded automatically and you will receive either a check+ (A), check (B), check- (C), or 0 (F).

Any homework assignment may be handed in after the due date, but with ceiling on the score. To accept the homework, the handin server will have separate (logical) assignments, named hw1-second-try, hw2-second-try, etc. These homeworks will also be automatically graded (of course, strange results from the auto-grading system will be investigated upon request). When your final grade is computed, the higher of the original grade and the -second-try grade will be used, except that if the -second-try grade is a check+ then it is treated as a check for this purpose. In other words, your second try cannot raise your grade if the first try was already a check.

The last time second-try assignments will be accepted is the Saturday (any time Saturday) after finals. (I have to hand in grades on Monday, so that gives me Sunday and Monday morning to figure them out.)

When computing your final grade, a check+ is treated like a 9, a check is treated like an 7, a check- is treated like 6, and a 0 is treated like a 0. The numbers are then averaged and this function is used to map them into number grades:

(define (numeric-grade->letter-grade number)
   ((<= 8.3 number 9) 'A)
   ((<= 7.8 number 8.3) 'A-)
   ((<= 7.4 number 7.8) 'B+)
   ((<= 7.0 number 7.4) 'B)
   ((<= 6.4 number 7.0) 'B-)
   ((<= 6.0 number 6.4) 'C)
   ((<= 5.0 number 6.0) 'C-)
   ((<= 4 number 5) 'D)
   ((<= 3 number 4) 'D-)
   ((<= number 3) 'F)))


Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit.

When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be entirely your own work. If you base your solution on any other written solution, you are cheating.

Note: allowing your work to be copied is cheating just as much as copying another's work, and thus also subject to punishment.

If you have any questions about what constitutes cheating, please ask.