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)

SoftwareHandin Status

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

T Lab, Tech F252
Version 5.3.1 of Racket is installed in /home/software/racket-5.3.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 either 2 or 3 assignments for each student; which homework is which is determined randomly.

The automatically graded homeworks are worth 40% of your grade and the manually graded ones are worth 60%.

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

Burke Fetscher
Office Hours: Wednesday 2-4pm in Tech A230

Week #DateTopicReadings
1Monday, January 7th, 2013Introduction to PL & Racket;
lecture00.pdf lecture01.pdf
PLAI §1, §2
1Friday, January 11th, 2013HW 1: Setup and Finger Exercises
1Friday, January 11th, 2013Variables & Functions
2Monday, January 14th, 2013Functions and Parsing
lecture03.pdf lecture04.pdf
PLAI §3, §4
2Friday, January 18th, 2013HW 2: Free, bound, and binding identifiers
2Friday, January 18th, 2013Guest Lecture by Matthew Flatt
3Monday, January 21st, 2013MLK day; no class
3Friday, January 25th, 2013HW 3: Multi-arity functions
3Friday, January 25th, 2013Deferred Subst
PLAI §4, §5
4Monday, January 28th, 2013Higher-order functions
4Friday, February 1st, 2013HW 4: Deferred Substitution, if0, neg?, and mult
5Monday, February 4th, 2013Deferred Substitution for higher-order functions, Y
lecture07.pdf (cotdlecture08.pdf
5Friday, February 8th, 2013HW 5: Functions do more than you thought: natural numbers
5Friday, February 8th, 2013Recursion via mutation
PLAI §12, 13
6Monday, February 11th, 2013State
PLAI §12, 13
6Friday, February 15th, 2013HW 6: State
6Friday, February 15th, 2013GC
PLAI §21
7Monday, February 18th, 2013GC
PLAI §21
7Friday, February 22nd, 2013GC
lecture12.pdf (cotd)
PLAI §21
8Monday, February 25th, 2013Types
PLAI §24-27
8Friday, March 1st, 2013Implementing a Type Checker
lecture14.pdf lecture15.pdf
8Friday, March 1st, 2013HW 7: GC
9Monday, March 4th, 2013Types for more constructs
9Friday, March 8th, 2013Type inference
10Monday, March 11th, 2013Random Testing
10Friday, March 15th, 2013Streams & Summary
10Friday, March 15th, 2013HW 8: Types
11Friday, March 22nd, 2013HW 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.