Reference
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:
- Syllabus
- Ben’s Course Notes on Themes
- Ben’s Course Notes on Computability and the Halting Problem (not covered in Fall 2017)
Part 1, in Racket:
-
Ben Wood’s course notes (from Fall, 2015):
- Introducing the Racket language, 251 notes
-
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:
-
Ben Wood’s course notes (from Fall, 2015):
-
Notes on the Standard ML language, by Dan Grossman, from CSE 341 at the University of Washington
- These notes cover largely the same material on ML as 251 (and in same style), but order topics differently and assume no background with Racket.
- ML Basics: bindings, types, expressions, functions, tuples, lists, options, immutability
- Data Types and Patterns: algebraic data types, pattern matching, polymorphism, tail recursion
- First-Class Functions: first-class and higher-order functions, closures, function types, currying
- Modules, Abstraction, and Type Inference : modules, abstract data types, type inference
-
Delayed Evaluation and Laziness, adapted from same series, but fitted closely to 251
-
-
Books on SML:
- Programming in Standard ML (PDF book), by Robert Harper
- Printed books in top drawer outside Ben’s office (Do not remove from CS department. Return here when done.):
- Elements of ML Programming, by Jeffrey D. Ullman
- ML for the Working Programmer, by Lawrence C. Paulson
-
SML libraries and tools:
- SML/NJ and Emacs SML Mode, an implementation of the Standard ML programming language and integration with the Emacs editor
- Guide to SML/NJ error messages
- Standard ML Basis Library Documentation, several authors
- Ocaml vs. SML:
Encore
Some Racket relatives:
- Scheme (many variations)
- Common Lisp (one of many variations)
- Clojure
Some Standard ML relatives and alternate implementations: