Programming Languages

Lecture2122 Sheridan Rd 250; MW 12:00—1: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, Fall 2015)
Sign up

SoftwareHandin Status

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

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


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)))

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

Zavier Henry
Office Hours: the Wilkinson lab (M338) 5-6pm Tuesday

Adrien Tateno
Office Hours: in the Wilkinson lab (M338) 5-6pm Wednesday

Anuj Iravane
Office Hours: in the Wilkinson lab (M338) 4-5pm Thursday

Josh Xu
Office Hours: in the Wilkinson lab (M338) 5-6pm Thursday

Week #DateTopicReadings
1Monday, September 21st, 2015Introduction to PL & Racket;
lecture00.pdf lecture01.pdf
PLAI §1, §2
1Wednesday, September 23rd, 2015Free, bound, and binding identifiers
1Due: Noon on Friday, September 25th, 2015HW 1: Setup and Finger Exercises
2Monday, September 28th, 2015Functions and Parsing
lecture03.pdf lecture04.pdf
PLAI §3, §4
2Wednesday, September 30th, 2015Deferred Subst
PLAI §4, §5
2Due: Noon on Friday, October 2nd, 2015HW 2: Free, bound, and binding identifiers
3Monday, October 5th, 2015Higher-order functions
3Wednesday, October 7th, 2015Higher-order functions, recursion
lecture07.pdf (cotdlecture08.pdf
3Due: Noon on Friday, October 9th, 2015HW 3: Multi-arity functions
4Monday, October 12th, 2015Y, Recursion via mutation
lecture08.pdf (cotdlecture09.pdf
PLAI §12, 13
4Wednesday, October 14th, 2015State
PLAI §12, 13
4Due: Noon on Friday, October 16th, 2015HW 4: Deferred Substitution, if0, neg?, and mult
5Monday, October 19th, 2015State & GC
lecture10.pdf (cotdlecture11.pdf
PLAI §12, 13
5Monday, October 19th, 2015GC
lecture11.pdf (cotd)
5Due: Noon on Friday, October 23rd, 2015HW 5: Functions do more than you thought: natural numbers
6Monday, October 26th, 2015GC
lecture11.pdf (cotdlecture12.pdf
6Wednesday, October 28th, 2015Random Testing
6Due: Noon on Friday, October 30th, 2015HW 6: State
7Monday, November 2nd, 2015GC
lecture12.pdf (cotd)
PLAI §21
7Wednesday, November 4th, 2015GC
lecture12.pdf (cotd)
PLAI §21
7No Homework on Friday, November 6th, 2015 
8Monday, November 9th, 2015Types
lecture13.pdf lecture14.pdf
8Wednesday, November 11th, 2015Types
8Due: Noon on Friday, November 13th, 2015HW 7: GC
9Monday, November 16th, 2015Types
lecture16.pdf lecture17.pdf
9Wednesday, November 18th, 2015Types
lecture16.pdf (cotdlecture17.pdf (cotd)
9Due: Noon on Friday, November 20th, 2015HW 8: Types
10Monday, November 23rd, 2015Threads via Continuations
11Due: Noon on Friday, December 4th, 2015HW C: Coq, extra credit
12Due: Noon on Thursday, December 10th, 2015HW K: Threads, extra 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.