COMP 360: Programming Languages, Spring 2013




Date Topic Required Reading Notes Assignments Out Slides
1/10 Introduction to class and Racket   code   slides
1/15 No class (snow)        
1/17 Functions, pairs, lists   code
For a bit of light reading, try cons or car and cdr.
1/22 Let, lambda, and the benefits of no mutation   code Homework 1, due 1/30 11:55pm slides
1/24 Static vs dynamic typing; practice with Racket   code   slides
1/29 Tail recursion and accumulators   code   slides
1/31 First class functions I   code   slides
2/5 First class functions II   code   slides
2/7 Course motivation; lexical scoping and closures   code Homework 2, due 2/15 11:55pm motivation slides
scoping/closure slides
2/12 Practice with environment diagrams        
2/14 Function closure idioms   code   slides
2/19 Closures (sorta) in Python and C++   code   slides
2/21 Environment diagram practice, more mutation, started delayed evaluation   code   slides
2/26 Delayed evaluation, thunks, laziness, streams   code Homework 3, due 3/8 11:55pm slides
2/28 Midterm        
3/5 More streams (continued lecture 12)        
3/7 No class, prof out of town       slides
3/19 Stream wrapup, memoization, static vs dynamic typing   code Homework 4, due 3/27 11:55pm slides
3/21 Intro to Java       slides
3/26 OOP from the ground up, Lists, and practice     Homework 5, due 4/9 11:55pm slides
4/2 Sets and Maps, more practice, inheritance       (see previous lecture slides)
4/4 Exceptions, Threading I       slides
4/9 Threading II       slides
4/11 Late binding in Java, C++, and Racket (building our own OO system)     Homework 6, due 4/18 11:55pm slides
4/16 Building an interpreter       slides
4/18 Building an interpreter (cont'd), compilers     final project slides
4/23 Event-driven programming       slides
4/25 Victory lap     slides