Syllabus

This syllabus provides a list of weekly goals, lecture notes, readings, and practice problems for the modules that are not yet on Coursera.  This syllabus is intended to be used in conjunction with the schedule page, which shows, for each lecture and lab section, when you will cover this material.

The supplemental reading is from  How to Design Programs, by Felleisen, Findler, Flatt and Krishnamurthi. Note that:
  • Sections numbered 2.1 through 4.5 are from HtDP/2e (the 2nd edition), which is available only online.
  • Sections numbered 8 and up are from HtDP/1e (the 1st edition), which is available online and in print.

The first edition is available in hardcopy in the bookstore. Readings in either edition of HtDP are not required, but you may find the readings useful supplement to lecture and the lecture notes.


 Module
Topics, Readings and Learning Goals Practice Problems
 BSL
BSL: Available on Coursera
Available on Coursera
 HtDFHtDF: Available on Coursera Available on Coursera
 HtDD

HtDD: Available on Coursera

Available on Coursera

 HtDW

HtDW: Available on Coursera

Available on Coursera

 Compound

Compound: Available on Coursera

Available on Coursera

  Self-Ref

Self-Ref: Available on Coursera

Available on Coursera

 Naturals

Naturals: Available on Coursera

Available on Coursera

 Helpers

Helpers: Available on Coursera


Available on Coursera

 BSTs

BSTs: Available on Coursera

Available on Coursera

 Mutual-Ref

Mutual-Ref: Available on Coursera

Available on Coursera

 2 One Of

2 One Of: Available on Coursera

Available on Coursera

 Local

Local: Available on Coursera

Available on Coursera


 Abstraction

Abstraction: Available on Coursera

Available on Coursera

 Lambda

Anonymous Functions (Lambda)

  • Be able to use lambda expressions.
Videos:
Lecture notes and other required reading:




 Generative Recursion

Available on Coursera

Available on Coursera

 

 Search

Available on Coursera

Available on Coursera

 Accumulators and Tail Recursion

Available on Coursera.


 

 Graphs

Available on Coursera

 Mutable State

Mutable Variables, Designing with Mutable Variables


Learning goals:
  • Be able to hand step the execution of functions operating on mutable variables.
  • Be able to design state variables and functions that exploit and maintain state variable invariants.
  • Be able to use state variables in world programs.
  • Be able to design loops using loop constructs like those found in languages like Java, Python, C etc.
  • Be able to relate specific design techniques to the big-picture of solving complex problems by decomposition of problem and composition of solutions.
  Mutable State Practice
 

Course Summary - Abstraction and (De)composition


Lecture notes and other required reading: