Programming Languages

LectureTech LR5; MF 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 2015)

SoftwareHandin Status

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

T Lab, Tech F252
Version 6.1.1 of Racket is installed in /home/software/racket-6.1.1/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 only a few assignments for each student; which homework is which is determined randomly.

The automatically graded homeworks and the manually graded ones are all worth the same amount in the computation of your final grade (but the manually graded ones will have more useful feedback written in them).

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 always 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 or an 8 or a 9.

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.

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

Zachary Smith
Office Hours: the Wilkinson lab (M338), W 3-5pm

Alex Kowalczuk
Office Hours: in the Wilkinson lab (M338), Th 11am-1pm

Conor Hetland
Office Hours: in the Wilkinson lab (M338), W 1-3pm

Week #DateTopicReadings
1Monday, January 5th, 2015Introduction to PL & Racket;
lecture00.pdf lecture01.pdf
PLAI §1, §2
1Friday, January 9th, 2015HW 1: Setup and Finger Exercises
1Friday, January 9th, 2015Free, bound, and binding identifiers
2Monday, January 12th, 2015Functions and Parsing
lecture03.pdf lecture04.pdf
PLAI §3, §4
2Friday, January 16th, 2015HW 2: Free, bound, and binding identifiers
2Friday, January 16th, 2015Deferred Subst
PLAI §4, §5
3Monday, January 19th, 2015MLK day; no class
3Friday, January 23rd, 2015HW 3: Multi-arity functions
3Friday, January 23rd, 2015Higher-order functions
4Monday, January 26th, 2015Higher-order functions
lecture07.pdf (cotd)
4Friday, January 30th, 2015HW 4: Deferred Substitution, if0, neg?, and mult
4Friday, January 30th, 2015Random Testing
5Monday, February 2nd, 2015Higher-order functions
lecture07.pdf (cotd)
5Friday, February 6th, 2015Y, Recursion via mutation
lecture08.pdf lecture09.pdf
PLAI §12, 13
6Monday, February 9th, 2015Recursion, State
lecture09.pdf (cotdlecture10.pdf
PLAI §12, 13
6Friday, February 13th, 2015HW 5: Functions do more than you thought: natural numbers
6Friday, February 13th, 2015State
lecture10.pdf (cotd)
PLAI §12, 13
7Monday, February 16th, 2015GC
PLAI §21
7Friday, February 20th, 2015HW 6: State
7Friday, February 20th, 2015GC
PLAI §21
8Monday, February 23rd, 2015GC
lecture12.pdf (cotd)
8Friday, February 27th, 2015GC
lecture12.pdf (cotd)
9Monday, March 2nd, 2015Types
lecture13.pdf lecture14.pdf
9Friday, March 6th, 2015Implementing a Type Checker
9Friday, March 6th, 2015HW 7: GC
10Monday, March 9th, 2015Implementing a Type Checker
lecture15.pdf (cotd)
10Friday, March 13th, 2015HW 8: Types


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.