Tutorials

Tutorials are optional materials that generally provide another example of the course content. The approach is often as a “think-aloud”: here’s what I’m thinking as I approach this problem. Some videos reference outdated exercise numbers from a different term. In those cases, you can find the correct exercise in the videos’ description.

  1. The Design Recipe. Writing basic functions. Details of the design recipe.

  2. Exercise: Writing describe-string. Working with string functions. Note: the in-video exercise number has changed; it is actually M02, slide 21.

  3. Working with Lists. Working with lists using map and foldr. Writing a helper function for foldr. Using map on two lists at once.

  4. Exercise: waldo. Stepping through a function that uses cond. Note: the in-video exercise number has changed; it is now M04, slide 14.

  5. Using foldr with cond. Writing a helper function for foldr that uses cond. Boolean expressions. Converting a string to a list.

  6. More Practice with foldr. Writing a function in 3 different ways using foldr. Note: this video references an exercise that no longer exists in the course notes.

  7. ALFs with Lambda. Four short problems solved using abstract list functions and lambda.

  8. Exercise: Writing my-member?. Recursion on a list, with an unchanging value. Working with Any. Following the list template. Note: this exercise is on slide 46 of M06.

  9. Exercise: Writing drop-e. Writing a function that needs to be a wrapper function. Recursion on a list. Note: the names of functions have changed, but this exercise corresponds to the problems on slide 60 and 64 of M06.

  10. Difference between cons and list. Comparing the behaviour of the two functions, and their use in recursive functions. Note: some reference is made to cons having been taught before list. This was from a previous term, and the difference in order is not important to the content of the video.

  11. Exercise: Writing sum-to. Recursion on a Nat using the countdown template. Note: this exercise can be found on slide 14 of module 7.

  12. Stepping Booleans. Tracing a user-defined function including and, or, and not. Note: the piazza posts referenced were from a previous term.

  13. Lists inside lists. Finding items with rest and first; working with lists inside lists inside lists inside lists….