Lecture Materials

In normal times, CS135 has an extensive set of slides that are used during in-person lectures. During these abnormal COVID-times, we are building on those slides with side-by-side commentary. That commentary is often text, may be video where that’s judged to be particularly suitable, or simply blank if we think the slide(s) in question are self-explanatory.

The lecture materials are also supplemented with exercises – short problems that you should be able to do quickly based on the material just covered to check your understanding and build your confidence.

The lecture materials contain self-assessment questions as well. These multiple-choice questions will form part of your mark for the term.

The best way to view the slides and commentary is with your browser window wide enough for them to display side-by-side.

Logging in

For the time being, at least, you will need to log in to access the “Slides with Commentary” pages. At the moment it’s required to give you marks for the participation or self-check questions. It’s our hope that eventually anyone can view the pages and you only need to log in when answering the questions.

M01 has no participation questions and thus you don’t need to log in for that one.

If you’re not already logged in, you’ll be asked to do so as soon as you attempt to access a page that requires it.

Slides with Commentary & Videos
M01 Syllabus Details about how the course works.
Slides with commentary
M02 Functions Writing functions is at the heart of using a functional programming language.
Slides with commentary
M03 The design recipe Our process for developing programs.
Slides with commentary
M04 Simple data We start with numbers, but also need strings, symbols, and booleans.
Slides with commentary
M05 Syntax & semantics of Beginning Student Defining rigourously what our programs mean.
Slides with commentary
M06 Lists Working with a list of data; data definitions.
Slides with commentary
M07 Natural numbers -- recursively Working with natural numbers based on a self-referential data definition.
Slides with commentary
M08 More lists Lists of lists, processing multiple lists, etc.
Slides with commentary
M09 Patterns of recursion Looking beyond simple patterns of recursion to accumulative recursion and generative recursion.
Slides with commentary
M10 Structures Data that belongs together.
Slides with commentary
M11 Trees Extending lists to include branches.
Slides with commentary
M12 Local definitions and lexical scope Software engineering.
Slides with commentary
M13 Functions as first class values Functions that consume or produce functions and more.
Slides with commentary
M14 Functional abstraction Going beyond function templates.
M15 Generative recursion Recursion that is not based on the form of the data.
M16 Graphs Directed graphs (not the Excel kind).
M17 Computing history Major milestones leading to functional and imperative programming.


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

  • 2020-09-09: Fractions such as 4/5 compared to division (4 divided by 5) was more carefully differentiated on 02-18. Spacing was added to several other slides in M02.
  • 2020-09-30: On M08-16 the lower left diagram was changed from the TaxRoll data to the PayRoll data so that both diagrams illustrate the same list.
  • 2020-10-20: The template for nested lists (M11 slide 83) was wrong, resulting in other errors throughout the nested list section. Essentially, the cons? should have been a list? in the conditional.