Programming LanguagesLecture  Abbott Auditorium, Pancoe Building; MW 12:30—1:50 
 Text  Programming Languages: Application and Interpretation (First Edition) by Krishnamurthi 
 Supplementary Reading  How to Design Programs by Felleisen, Findler, Flatt and Krishnamurthi
Essentials of Programming Languages by Friedman and Wand 
 Piazza  Class (should link to EECS 321, Winter 2017) Sign up 
 Software  Handin Status
quickref.rkt a quick reference to things Racket; open in DrRacket 
 Lab Space  T Lab, Tech F252 Version 6.7 of Racket is installed in /home/software/racket/bin/drracket on the linux side of the tlab machines. 
 Course Staff  Vincent StAmour Office Hours: Tue 23pm, Kitchen near Ford 2210
Spencer Florence Office Hours: Thu 45pm, Kitchen near Ford 2210 
 Syllabus  Week #  Date  Topic  Readings  1  Tuesday, January 3rd, 2017  Introduction to PL & Racket;
lecture00.pdf lecture01.pdf  PLAI §1, §2  1  Wednesday, January 4th, 2017  Free, bound, and binding identifiers
lecture02.pdf  PLAI §3  1  Due: Noon on Friday, January 6th, 2017  HW 1: Setup and Finger Exercises   2  Monday, January 9th, 2017  Functions and Parsing
lecture03.pdf lecture04.pdf  PLAI §4  2  Wednesday, January 11th, 2017  Deferred Substitution
lecture06.pdf  PLAI §5  2  Due: Noon on Friday, January 13th, 2017  HW 2: Free, bound, and binding identifiers   3  Wednesday, January 18th, 2017  Random testing
lecture05.pdf   3  Due: Noon on Friday, January 20th, 2017  HW 3: Multiarity functions   4  Monday, January 23rd, 2017  Higherorder functions
lecture07.pdf  PLAI §6  4  Wednesday, January 25th, 2017  Higherorder functions, Recursion
lecture07.pdf (cot^{d}) lecture08.pdf  PLAI §6, §9  4  No Homework on Friday, January 27th, 2017    5  Monday, January 30th, 2017  Recursion via mutation, State
lecture09.pdf lecture10.pdf  PLAI §10  5  Wednesday, February 1st, 2017  State
lecture10.pdf (cot^{d})  PLAI §12, §13  5  Due: Noon on Friday, February 3rd, 2017  HW 4: Deferred Substitution, if0, neg?, and mult   6  Monday, February 6th, 2017  State, Garbage Collection
lecture10.pdf (cot^{d}) lecture11.pdf  PLAI §12, §13  6  Wednesday, February 8th, 2017  Garbage Collection
lecture11.pdf (cot^{d})  PLAI §21  6  Due: Noon on Friday, February 10th, 2017  HW 5: Functions do more than you thought: natural numbers   7  Monday, February 13th, 2017  Garbage Collection
lecture11.pdf (cot^{d}) lecture12.pdf   7  Wednesday, February 15th, 2017  Garbage Collection
lecture12.pdf (cot^{d})   7  Due: Noon on Friday, February 17th, 2017  HW 6: State   8  Monday, February 20th, 2017  Garbage Collection
lecture12.pdf (cot^{d})   8  Wednesday, February 22nd, 2017  Types
lecture13.pdf lecture14.pdf  PLAI §24, §25  8  No Homework on Friday, February 24th, 2017    9  Monday, February 27th, 2017  Types
lecture15.pdf lecture16.pdf   9  Wednesday, March 1st, 2017  Types
lecture16.pdf (cot^{d})  PLAI §26, §28  9  Due: Noon on Friday, March 3rd, 2017  HW 7: Garbage Collection   10  Monday, March 6th, 2017  Types
lecture17.pdf  PLAI §30  10  Wednesday, March 8th, 2017  Threads via Continuations
lecture19.pdf   10  Due: Noon on Friday, March 10th, 2017  HW 8: Types   11  Due: Noon on Friday, March 17th, 2017  HW Ω: Threads via Continuations 

 Grading  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 hw1secondtry, hw2secondtry, etc. These homeworks will also be automatically graded (of course, strange results from the autograding system will be investigated upon request). When your final grade is computed, the higher of the original grade and the secondtry grade will be used, except that if the secondtry 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 secondtry 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 (numericgrade>lettergrade number)
(cond
((<= 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)))


 Collaboration policy  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 highlevel 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. 

