This page collects reading and reference material for CS 251. For documentation of tools, see the tools page.

The course schedule list topics covered in class and assignments to be completed outside of class. Many of our materials are adapted from other instructors and courses, as noted within.

  • Each topic includes:
    • links to slides and sample code supporting our in-class discussion of the topic
    • links to readings and reference materials that offer more detail or alternative presentations
  • Each assignment includes:
    • links to some relevant topic materials
    • links to additional readings to be completed specifically as part of the assignment (not necessarily listed here)

Assignments are also listed on a separate page.

Reference Materials

Part 0, in the abstract:

Part 1, in Racket:

  • Ben Wood’s course notes (from Fall, 2015):

  • Other references:

    • Racket Guide, several authors: thorough and official documentation of the Racket language and libraries
    • DrRacket, an implementation of the Racket programming language and an accompanying programming environment

Part 2, in Standard ML:

Part 3, in Scala, etc.

As we wrap up the course, we use Scala to illustrate a couple points here and there, but with a much looser “learn what you need” approach. We pick off bits and pieces here and there and experiment a bit.

Encore

Some Racket relatives:

Some Standard ML relatives and alternate implementations:

  • OCaml another variation on ML
  • F#: ML on the Microsoft .NET platform
  • Mlton optimizing compiler for Standard ML
  • Haskell, a descendant of ML, with purity, lazy evaluation, and additional type system features