CS 135: Designing Functional Programs

Course Materials and DrRacket

Style and Survival Guides

Lecture Slides

The slides used in lectures are posted below. We strongly recommend you print them out or purchase them from media.doc (Math MC 2018) and bring the relevant portion to class.

Reading the slides is not an adequate substitute for attending lectures. The slides do not contain anything that the instructor says, writes on the board, or demonstrates on a computer during lectures. If you miss a lecture, you should contact a classmate who was present and catch up promptly.

These slides are available in "1up" (one slide per page, suitable for viewing on a computer screen) and "3up" (three slides per page, plus room for notes, suitable for printing and bringing to class) versions.

  • CS 135 Winter 2019 Course Notes: All Modules (To be added)
  • 01: Introduction to CS 135 (1up, 3up)
  • 02: The design recipe (1up, 3up)
  • 03: The syntax and semantics of Beginning Student (1up, 3up)
  • 04: Structures (1up, 3up)
  • 05: Lists (1up, 3up)
  • 06: Working with recursion (1up, 3up)
  • 07: Types of recursion (1up, 3up)
  • 08: Trees (1up, 3up)
  • 09: Local Definitions and lexical scope (1up, 3up)
  • 10: Functional abstraction (1up, 3up)
  • 11: Generative and accumulative recursion (1up, 3up)
  • 12: Graphs (1up, 3up)
  • 13: History (1up, 3up)

Errors in Lecture Slides

Errors in the lecture slides will be posted here. If you discover an error that is not posted below, please report it to your instructor.

Additional Notes

Additional Notes to supplement course material will be posted here.


The textbook for the course is "How to Design Programs" by Felleisen, Flatt, Fiedler, and Krishnamurthi, MIT Press, 2003. Make sure to use the First Edition (2003) and not the Second Edition (2018). You can read the book online or purchase it from the UW bookstore.

If the textbook and lecture slides have conflicting information, the lecture slides take precedence over the textbook. In particular, you should follow the design recipe taught in lectures, and not the textbook.


Assignments should be done using DrRacket (version 7.0), a free instructional development environment tailored for use with the CS 135 textbook. We recommend you download DrRacket and use it on your own computer. DrRacket is available for free for Unix (including Linux), Mac OS X, and Windows.

You can use DrRacket in the Mac Labs on MC third floor. You can use the computer labs anytime, as long as they're not reserved for other courses (see schedule posted on lab door). To log on to the Macs, you need a password which you can set here: https://www.student.cs.uwaterloo.ca/password/. For more information, see Assignment 0.

Last modified on Monday, 07 January 2019, at 21:13 hours.