Order of mastery

  1. Can use define to create a function (recipe p21)
  2. Can use check-expect (second edition, Section 3.5)
  3. Knows that for every dependency in the problem, solution should have an auxiliary function (pp 21–26)
  4. Can use cond for conditionals (recipe p44)
  5. Can create and append strings (second edition, Sections 1.2 and 1.3)
  6. Can use define-struct; can create and select from structures (pp 51-79; recipe p71)
  7. Can write functions that use type predicates and cond to consume “mixed data” (recipe p89; read to p96)
  8. Can write functions that define and consume lists using empty, cons, empty?, first, and rest (p137, p152)
  9. Can apply the refined design ideas for auxiliary functions (section 12), including creating an auxiliary function when one data definition depends on another (p182)
  10. Can use trees (p209)
  11. Can use multiple mutually referential data definitions (p221)
  12. Can apply iterative refinement (p228)
  13. Can choose an appropriate case analysis for functions with multiple complex arguments (p258)
  14. Can define internal functions and variables using local (p280)
  15. Can abstract similar data structures and computations (p298)
  16. Can use first-class and higher-order functions (p334)
  17. Can define anonymous functions (p355)
  18. Can use generative recursion (pp368–406)
  19. Can use generative recursion to read files
  20. Has seen graph structures (pp406–416)
  21. Can reason about costs
  22. Can use accumulating parameters
  23. Can program with mutable state