This course could not have come together without materials and inspiration from several sources.
Many lectures and reading materials are based on these texts:
How to Design Programs by Felleisen, Findler, Flatt, and Krishnamurthi
Pure Functional Data Structures by Okasaki
Programming in Scala by Oderksy, Spoon, and Venners
You should read these, even if you’ve taken this course.
For several assignments, we use a graphics library based on the one documented in this article: A Functional I/O System by Felleisen, Findler, Flatt, and Krishnamurthi.
Some of our assignments are adapted from other sources:
The Join Lists assignment from CS19 at Brown University by Krishnamurthi, et al
The Tic Tac Toe assignment is adapted from CMPSCI383 by Liberatore
The Sudoku assignment is adapted from Solving Every Sudoku Puzzle by Norvig
Thanks to Joseph Collard and Nimish Gupta for debugging several assignments.