Programming Languages

LectureTech M345; MW 2:00—3:30

TextProgramming Languages: Application and Interpretation
by Krishnamurthi

Supplementary
Reading
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

SoftwarePLT Scheme (be sure you get version 4.2.3; it was the current release at the beginning of the quarter but there will be a release during the quarter)
Handin Status
quick-ref.ss a quick reference to things PLT; open in DrScheme

Lab
Space
T Lab, Tech F252
PLT is installed in /opt/plt-4.2.3/bin/drscheme on the linux side of the t-lab machines.
Ask if you prefer the windows side.

Grading
Weekly Homeworks:75%
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.5 lots wrong with essential parts of the assignment, but well tested
 6 woeful tests (no matter how good the rest is)
 5-1 you don't want to be here
 0 nothing handed in

Course
Staff
Robby Findler
Office Hours: by appt

Syllabus
Week #DateTopicReadings
11/4Introduction to PL & PLT;
lecture00.pdf lecture01.pdf
PLAI §1, 2
11/8Variables
lecture02.pdf
PLAI §3, 4
11/8HW 1: Setup and mini-string language
 
21/11Functions, Quasiquote
lecture03.pdf lecture03.5.pdf
PLAI §1, 4
21/13HW 2: Free, bound, and binding identifiers
21/15Random testing
lecture04.pdf
 
31/18MLK day; no class
31/20HW 3: N-ary functions & records
31/22Deferring substition
lecture05.pdf
PLAI §5
 
41/25First-class functions & recursion
lecture06.pdf lecture07.pdf
PLAI §6, 9
41/27HW 4: N-ary functions w/ again, conditionals, & multiplication
41/29Recursion (continued), state
lecture08.pdf lecture09.pdf
PLAI §9, 10
 
52/1State (continued)
PLAI §12, 13
52/3HW 5: N-ary functions (now in the parser), pairs, and summation
52/5Garbage collection: allocation
lecture10.pdf
PLAI
 
62/8Garbage collection: non-copying collector
lecture11.pdf
PLAI
62/10HW 6: Mutable records
62/12Garbage collection: tagless allocator
PLAI
 
72/15Garbage collection: tagless collector
bibop.ss
PLAI
72/19
 
82/22Introduction to types
lecture13.pdf
PLAI §24, 25
82/24HW 7: Garbage collection
82/26Writing a first type checker
lecture14.pdf
PLAI §24, 25
 
93/1Extending the typed language
lecture15.pdf
PLAI §26, 27
93/3HW 8: Garbage collection, take 2
93/5Type Inference
PLAI §30
 
103/8
103/10HW 9: Types
103/12Exam

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