Today we’ll talk about the idea of RECURSION in the pre-recorded lectures. PLEASE. PLEASE. PLEASE. Watch these videos before coming to the Tutorial session on Wednesday.

There are a lot of them. Maybe you don’t need to watch every single one at regular speed. Maybe you can watch some at double speed but then some at single speed. It’s up to you – but keep in mind we’ll ask you to actually WRITE some recursive functions in the Tutorial.

Recursion is a powerful tool that allows us to express the “solution” to a problem in terms of a “base step” and a “recursive step.” Essentially, it’s a programming tool that can make it really easy to break seemingly large problems down into simple steps. It is not exclusive to ISL+ or to functional programming. It exists in almost all programming languages as it’s often the simplest way to express a solution to complex problems.

For example, here it is in Python!

While it is powerful…it is also confusing. We have to get used to thinking in this new way in order for it to be useful to us as computer scientists.

If you’re bored, try googling “recursion” and seeing what happens!


Today's Resources

1. Exercise Files

Download Exercise Files

2. Slides

3. Pre-Recorded Lecture Video(s), Mini-Quizzes, and Live Recordings

Available Videos
Link Title Type Duration
Video 0 Intro (Review) pre-recorded 9:24
Video 1 Summing a List under the Substitution Model (Review) pre-recorded 5:56
Video 2 Recursion pre-recorded 3:07
Video 3 Recursively Summing a List (Example) pre-recorded 6:11
Video 4 Recursion Template pre-recorded 4:20
Video 5 Recursive foldr (example) pre-recorded 2:26
Video 6 Recursive length (example)

(MQ - No Longer Available)

video_quiz 3:48
Video 7 Sussman Form (new special form) pre-recorded 2:27
Video 8 Recursive iterated-beside (example) pre-recorded 5:37
Video 9 (Optional) Execution is Recursive! pre-recorded 2:34