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 numerical and 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.
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.
M00 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.
Title Slides | Description Slides with Commentary & Videos | |
---|---|---|
M00 | Syllabus | Details about how the course works. |
1up 3up slides | Slides with commentary | |
M01 | Functions | Writing functions is at the heart of using a functional programming language. |
1up 3up slides | Slides with commentary | |
M02 | The design recipe | Our process for developing programs. |
1up 3up slides | Slides with commentary | |
M03 | Working with lists | Working with information stored in lists. |
1up 3up slides | Slides with commentary | |
M04 | Making Decisions | Doing different things in different situations. |
1up 3up slides | Slides with commentary | |
M05 | Deconstructing and Constructing Lists | Selecting items from lists, and building lists from lists. |
1up 3up slides | Slides with commentary | |
M06 | Lists — recursively | Working with lists based on a self-referential data definition. |
1up 3up slides | Slides with commentary | |
M07 | Natural Numbers | Working with natural numbers based on a self-referential data definition. |
1up 3up slides | Slides with commentary | |
M08 | More lists | Lists of lists, processing multiple lists, etc. |
1up 3up slides | Slides with commentary | |
M09 | Patterns of recursion | Looking beyond simple patterns of recursion to accumulative recursion and generative recursion. |
1up 3up slides | Slides with commentary | |
M10 | Structures | Data that belongs together. |
1up 3up slides | Slides with commentary | |
M11 | Trees | Extending lists to include branches. |
1up 3up slides | Slides with commentary | |
M12 | Local definitions and lexical scope | Software engineering. |
1up 3up slides | Slides with commentary | |
M13 | Functions as first class values | Functions that consume or produce functions and more. |
1up 3up slides | Slides with commentary | |
M14 | Functional abstraction | A second look at higher-order functions: as abstractions of recursion. |
1up 3up slides | Slides with commentary | |
M15 | Generative recursion | Recursion that is not based on the form of the data. |
1up 3up slides | Slides with commentary | |
M16 | Graphs | Directed graphs (not the Excel kind). |
1up 3up slides | Slides with commentary | |
M17 | Computing history | Major milestones leading to functional and imperative programming. |
1up 3up slides | Slides with commentary |
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.