Programming Languages

There is a bug in Racket 5.0.2's plai/mutator language. To get a patch that fixes the bug, start up DrRacket and choose the File|Install .plt File ... menu item, and paste in this url:

LectureTech L150; 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

Mailing ListSubscribe   Archive
Warning: subscription acknowledgment may land in your spam folder

SoftwareHandin Status

Racket (be sure you get version 5.0.2; it was the current release at the beginning of the quarter but there will be a release during the quarter)

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

T Lab, Tech F252
Racket is installed in /opt/racket-5.0.2/bin/drracket on the linux side of the t-lab machines.
Ask if you prefer the windows side.

Weekly Homeworks:75% (weighted equally)
Midterm Exam: 25%
Homeworks are graded on a scale of 0 to 10, as follows:
 10 perfect++ (I don't expect to see any homeworks like this, but just in case)
 9 all functionality there, working, and well tested
 8 something wrong, but not in the essential parts of the assignment, well tested
 7 something wrong in the essential parts of the assignment, but well tested
 6 lots wrong with essential parts of the assignment, but well tested
 5 woeful tests (no matter how good the rest is)
 4-1 you don't want to be here
 0 nothing handed in

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

James Swaine
Office Hours: Wednesdays 11:15am - 1pm Ford 2.211, or by appt (email

Week #DateTopicReadings
1Friday, January 7th, 2011Introduction to PL & Racket;
lecture00.pdf lecture01.pdf lecture02.pdf
PLAI §1, 2
2Monday, January 10th, 2011Variables
lecture02.pdf (cotd)
2Friday, January 14th, 2011Functions
2Friday, January 14th, 2011HW 1: Setup and mini-string language
3Monday, January 17th, 2011MLK day; no class
3Friday, January 21st, 2011Software Engineering talk
3Friday, January 21st, 2011HW 2: Free, bound, and binding identifiers
4Monday, January 24th, 2011Quasiquote and random testing
lecture03.5.pdf lecture04.pdf
4Friday, January 28th, 2011Deferring substition
4Friday, January 28th, 2011HW 3: Multi-arity functions and rec
5Monday, January 31st, 2011Higher-order functions
5Friday, February 4th, 2011Higher-order functions
lecture06.pdf (cotd)
5Saturday, February 5th, 2011HW 4: Deferred Substitution, if0, neg?, and mult
6Monday, February 7th, 2011The Why of Y (thanks to Richard Gabriel)
6Friday, February 11th, 2011Deferred Substitution for higher-order functions
lecture06.pdf (cotd)
7Monday, February 14th, 2011Recursion
PLAI §9, 10
7Friday, February 18th, 2011State
PLAI §12, 13
7Saturday, February 19th, 2011HW 5: Functions do more than you thought: natural numbers
8Monday, February 21st, 2011State, GC
lecture09.pdf (cotdlecture10.pdf
PLAI §12, 13
8Friday, February 25th, 2011GC
lecture10.pdf (cotdlecture11.pdf
8Saturday, February 26th, 2011HW 6: State
9Monday, February 28th, 2011GC
lecture11.pdf (cotd)
9Saturday, March 5th, 2011GC
lecture11.pdf (cotd)
9Saturday, March 5th, 2011HW 7: GC
10Monday, March 7th, 2011Exam
10Friday, March 11th, 2011Types
11Monday, March 14th, 2011Types (optional lecture; in L160)
11Saturday, March 19th, 2011HW 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.

When taking a test, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.

We do not distinguish between cheaters who copy other's work and cheaters who allow their work to be copied.

If you cheat, you will receive the harest penalty possible under the rules of Northwestern. If you have any questions about what constitutes cheating, please ask.