EECS 321: Programming Languages

LectureTech LR3; Tuesdays and Thursdays 11:00—12:20

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

SoftwareHandin Status

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

Vincent St-Amour
Office Hours: Mondays 12:30-1pm and Wednesdays 3pm-4pm, or by appointment, Mudd 3215

Spencer Florence, Chloe Brown, Hakan Dingenc, Kate Hayner-Slattery, Jeremy Kaish, Louisa Lee, and Patrick Sachaj
Office Hours:
Mondays: 1pm-3pm (in Wilkinson), 4pm-6pm (in Mudd 3534)
Tuesdays: 4pm-6pm (in Mudd 3303)
Wednesdays: noon-3pm (in Mudd 3303)
Thursdays: 2pm-6pm (in Wilkinson)
Fridays: noon-6pm (in Mudd 3534)

Week #DateTopicReadings
1Tuesday, April 2nd, 2019Introduction
01a-intro.pdf 01b-plai.pdf
PLAI §1, §2
1Thursday, April 4th, 2019Variables and Binding
1Due: 6pm on Friday, April 5th, 2019HW 1: Setup and Finger Exercises
2Tuesday, April 9th, 2019Functions and Parsing
2Thursday, April 11th, 2019Deferred Substitution
2Due: 6pm on Friday, April 12th, 2019HW 2: Binding
3Tuesday, April 16th, 2019Random Testing
3Thursday, April 18th, 2019Higher-Order Functions
3Due: 6pm on Friday, April 19th, 2019HW 3: Multi-Argument Functions
4Tuesday, April 23rd, 2019Capture-Avoiding Substitution, Compilation
07a-capture-avoiding-substitution.pdf 07b-compilation.pdf
4Thursday, April 25th, 2019Higher-order Functions II, Recursion
08a-higher-order-functions-2.pdf 08b-recursion.pdf
PLAI §6, §9
4Due: 6pm on Friday, April 26th, 2019HW 4: Deferred Substitution
5Tuesday, April 30th, 2019Recursion II, State
09a-recursion-2.pdf 09b-state.pdf
PLAI §10, §12, §13
5Thursday, May 2nd, 2019State II
PLAI §13
5Due: 6pm on Friday, May 3rd, 2019HW 5: Higher-Order Functions
6Tuesday, May 7th, 2019Control
PLAI §18, §19
6Thursday, May 9th, 2019Garbage Collection: Intro
PLAI §21
6Due: 6pm on Friday, May 10th, 2019HW 6: State
7Tuesday, May 14th, 2019Garbage Collection: Mark-and-Sweep
7Thursday, May 16th, 2019Garbage Collection: Mark-and-Sweep
13-14-gc-mark-and-sweep.pdf (cont'd)
7Due: 6pm on Friday, May 17th, 2019HW 7: Control
8Tuesday, May 21st, 2019Garbage Collection: Copying, Types: Intro
15a-gc-copying.pdf 15b-types-intro.pdf
PLAI §24
8Thursday, May 23rd, 2019Types: Typing Rules
PLAI §25
8No Homework on Friday, May 24th, 2019 
9Tuesday, May 28th, 2019Types: Typechecking
9Thursday, May 30th, 2019Types: Type Soundness, Extensions
18a-type-soundness.pdf 18b-types-extensions.pdf
PLAI §28
9Due: 6pm on Friday, May 31st, 2019HW 8: Garbage Collection
10Tuesday, June 4th, 2019Types: Type Inference
PLAI §30
10Thursday, June 6th, 2019Generational GC & Cheney on the MTA
20a-generational-gc.pdf 20b-recap.pdf
10Due: 6pm on Friday, June 7th, 2019HW 9: Types


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

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.0 number 5.0) 'D)
   ((<= number 4.0) 'F)))

Homeworks are due on Fridays at 6pm. You can expect grades to be out on the following Monday. Failing that, you will have heard from the course staff regarding when to expect them.

To encourage you to revisit material you have ot yet mastered, you have the option to resubmit homework assignments after their original deadline. If your understanding of that homework has improved, hopefully so should your grade.

Each homework has two resubmission deadlines: hwN-second-round at 6pm the Friday following the original deadline, and hwN-third-round at 6pm the Friday two weeks after the original deadline. You can submit to any of the three deadlines for a homework independently. E.g., you don't need to submit to the second round to be allowed to submit to the third, etc. Resubmission grading follows the same schedule described above. Late submissions will not be accepted.

Resubmission grades are capped to an 8, halfway between a check and a check+. I.e., if you get a check+ on a resubmission, it counts as an 8.

The last time second-try assignments will be accepted will be Wednesday of finals week (June 12th), 6pm.


Collaboration is a really good thing and we encourage it. On the other hand, cheating is a very serious offense, which carries serious consequences. It's OK to meet with colleagues, form study groups, discuss assignments with them, or compare alternative approaches. But it is never ok to share code or homework solutions, or even to see each other's code or solutions. What you turn in must be your own work. Copying (or even studying) code, solutions, etc., from anywhere (e.g., other people, web, GitHub) is strictly prohibited. Be aware that we use the (highly effective) MOSS software similarity detection system. If you discuss your work with another group, please list their names in your hand-in.

It is also forbidden to share, post, or otherwise publicise your solutions. This even extends after the quarter ends. No matter how proud you are of them, no posting your solutions to GitHub; doing so is an invitation to plagiarism.

It is the responsibility of every student in this class to be familiar with and to adhere to the Academic Integrity Policies of Northwestern University and the McCormick School of Engineering. The policies can be found here.

Any suspicion of violation of these policies will be reported immediately to the Associate Dean for Undergraduate Studies. If you are in doubt whether your actions constitute a violation of the above policies, ask the instructor.