Programming Languages

LectureTech L221; MW 2:00—3:20

TextProgramming Languages: Application and Interpretation
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 2014)

SoftwareHandin Status

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

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


You homework each week will be graded either automatically, or by the instructor reading over the homework carefully. If it is read by the instructor, it will be graded on a scale of 0 to 9, as follows:

 9 all functionality there, working, and well tested (A)
 8 something wrong, but not in the essential parts of the assignment, well tested (A-)
 7 something wrong in the essential parts of the assignment, but well tested (B)
 6 lots wrong with essential parts of the assignment, but well tested (C)
 5 woeful tests, no matter how good the rest is (D)
 4-1 you don't want to be here
 0 nothing handed in, or honor code info missing (F)

If it is graded automatically, you will receive either a check+ (A), check (B), check- (C), or 0 (F). The instructor will grade either 2 or 3 assignments for each student; which homework is which is determined randomly.

The automatically graded homeworks and the manually graded ones are all each worth the same amount in the computation of your final grade.

Robby Findler
Office Hours: by appt (send email; I'm around during the day during the week)

Max New
Office Hours: Thursdays 12-2pm in the Wilkinson lab (M338)

Week #DateTopicReadings
1Monday, January 6th, 2014Class canceled
1Friday, January 10th, 2014Introduction to PL & Racket;
lecture00.pdf lecture01.pdf
PLAI §1, §2
2Monday, January 13th, 2014Free, bound, and binding identifiers
2Friday, January 17th, 2014HW 1: Setup and Finger Exercises
2Friday, January 17th, 2014Functions and Parsing
lecture03.pdf lecture04.pdf
PLAI §3, §4
3Monday, January 20th, 2014MLK day; no class
3Friday, January 24th, 2014HW 2: Free, bound, and binding identifiers
3Friday, January 24th, 2014Deferred Subst
PLAI §4, §5
4Monday, January 27th, 2014Higher-order functions
4Friday, January 31st, 2014HW 4: Deferred Substitution, if0, neg?, and mult
4Friday, January 31st, 2014Deferred Subst for higher-order fns
lecture07.pdf (cotd)
5Monday, February 3rd, 2014Y, Recursion via mutation
lecture08.pdf lecture09.pdf
PLAI §12, 13
5Friday, February 7th, 2014HW 5: Functions do more than you thought: natural numbers
5Monday, February 3rd, 2014Recursion via mutation, State
lecture09.pdf (cotdlecture10.pdf
PLAI §12, 13
6Monday, February 10th, 2014State
lecture10.pdf (cotd)
PLAI §12, 13
6Friday, February 14th, 2014HW 6: State
6Friday, February 14th, 2014GC
PLAI §21
7Monday, February 17th, 2014GC
PLAI §21
7Friday, February 21st, 2014GC
lecture12.pdf (cotd)
PLAI §21
8Monday, February 24th, 2014GC
lecture12.pdf (cotd)
8Friday, February 28th, 2014HW 7: GC
8Friday, February 28th, 2014Random testing
9Monday, March 3rd, 2014Types
lecture13.pdf lecture14.pdf
9Friday, March 7th, 2014Implementing a Type Checker
10Monday, March 10th, 2014Type Inference
10Friday, March 14th, 2014HW 8: Types
11Friday, March 21st, 2014HW X: Replacement Credit


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.