COMP 360: Programming Languages, Fall 2015




Date Topic Required Reading Notes Assignments Out Slides
8/26 Introduction to class and Racket   code   slides
8/31 Functions, pairs, lists   code
For a bit of light reading, try cons or car and cdr.
9/2 Practice with box-and-pointer diagrams, let expressions   code   slides
9/9 Racket practice   code (see Moodle for partial solutions) Project 1, due 9/15 11:55pm (no slides)
9/14 Internal defines/let wrapup, benefits of no mutation, static vs dynamic typing       slides
9/16 Tail recursion and accumulators   code   slides
9/21 First class functions I   code   slides
9/23 First class functions II   code Project 2, due 9/30 11:55pm slides
9/28 Lexical scoping I   code
9/30 Lexical scoping II (env diagram practice)   handout   (no slides)
10/5 Finish lexical scope, dynamic scope, foldr, start function closure idioms       slides
10/7 Function closure idioms (currying, mutation, callbacks, ADTs)   code
10/12 ADT env diagram practice, mutation, delayed/lazy evaluation   code
10/14 Thunks, lazy evaluation, streams   code
Project 3, due 11/4 11:55pm slides
10/19 Fall break        
10/21 Stream practice   code
10/26 Prof Larkins' lecture        
10/28 Midterm        
11/2 Stream wrapup, memoization, static/dynamic typing comparison       slides
11/4 Intro to Java   Rational class Project 4, due 11/13 11:55pm
[ startup code ] [ rsound installation directions ]
11/9 OOP from the ground up, lists, practice   Point/Point3D classes   slides
11/11 Sets, maps, more practice, inheritance       (continue with previous slides)
11/16 Java exceptions, threading   CountingEx/Bank classes Project 5, due 11/23 11:55pm
[ startup code ]
11/18 More threading   Restaurant classes   (see previous slides)
11/23 Late binding/dynamic dispatch; building our own OOP system   Point/Point3D/ColorPoint in Racket Project 6, due 12/7 11:55pm
[ startup code ]
11/25 (Thanksgiving)        
11/30 Interpreters I       slides
12/2 Interpreters II     Project 7, due 12/14 11:55pm
[ startup code ]
(see previous slides)
12/7 Event-driven programming       slides
12/9 Victory lap/course evals       slides