CS 360: Programming Languages
Spring 2023
Administrivia
- Instructor: Phillip Kirlin
- Office hours: Mon & Tue 3:30-5, Wed 10-11, Thu 11-12. Also available by appointment and over Slack.
- Canvas page: Use for grades, online assignment submissions, and assignment solutions.
- Syllabus and additional policies.
- New midterm date: Tue, March 7, in class.
- Final exam date: Mon, May 1, 5:30pm.
Resources
- Downloading, installing, and using DrRacket (the Racket interpreter and IDE)
- Other Racket things: main website, documentation
- Optional textbook: Structure and Interpretation of Computer Programs
- Online Scheme interpreters (very similar to Racket):
- Repl.it, One that can draw box-and-pointer diagrams (Try typing
'(1 2 3)
at the prompt.)
- Repl.it, One that can draw box-and-pointer diagrams (Try typing
- Starting stream code
Calendar
- Thu, Jan 12
- Introduction to class and to Racket
- Slides Code
- Tue, Jan 17
- Functions, pairs, lists
- Slides Code
- Thu, Jan 19
- Lists, box-and-pointer diagrams
- Slides Code
- Tue, Jan 24
- Racket practice
- Slides Starter code
- Project Project 1 (due Thu, Feb 2)
- Slides Starter code
- Thu, Jan 26
- Local bindings
- Slides Code
- Tue, Jan 31
- Class canceled, ice
- Thu, Feb 2
- Class canceled, ice
- Tue, Feb 7
- Tail recursion
- Slides Code
- Thu, Feb 9
- First class functions I
- Slides Code
- Tue, Feb 14
- First class functions II
- Slides Code
- Thu, Feb 16
- Practice
Problems- Project Project 2 (due Thu, Mar 1)
- Tue, Feb 21
- More practice and
foldr
- Slides
- Thu, Feb 23
- Lexical scope I
- Slides Code
- Tue, Feb 28
- Lexical scope II
- Slides Code
- Thu, Mar 2
- Function closure idioms
- Slides Code
- Tue, Mar 7
- Midterm exam
- Thu, Mar 9
- Designing a stack ADT, mutation
- Slides Code
- Tue, Mar 14
- Spring break
- Thu, Mar 16
- Spring break
- Tue, Mar 21
- Delayed evaluation, streams
- Slides Code
- Project Project 3 (due Thu, Mar 30)
- Slides Code
- Thu, Mar 23
- Streams
- Slides Code
- Tue, Mar 28
- More streams
- Slides
- Thu, Mar 30
- Interpreters I
- Slides Code
- Project Project 4 (due Thu, Apr 13)
- Slides Code
- Tue, Apr 4
- Interpreters II
- Slides Code
- Thu, Apr 6
- Easter break
- Tue, Apr 11
- Finish interpreters, start threading
Code - Thu, Apr 13
- Threading
- Slides
- Project Project 5 (due Wed, May 3)
- Slides
- Tue, Apr 18
- Threading
(See slides above) - Thu, Apr 20
- Threading
(See slides above) - Tue, Apr 25
- Event-driven programming: Click the rectangle lab
- Slides Code
- Thu, Apr 27
- Victory lap
- Slides