CS 5010: Module 03
Module Overview
This week you will learn about the System Design Recipe and the Iterative Design Recipe, which give you a roadmap to designing systems that are larger than a few functions. To design a system iteratively means to design it by starting with a simple base and then adding new features one at a time. The iterative design recipe gives a recipe for adding a new feature to an existing system.
The System Design Recipe says
- Write a purpose statement for your system.
- Design data to represent the relevant information in the world.
- Make a wishlist of "main functions". Write down their contracts and purpose statements.
- Design the individual functions. Maintain a wishlist of functions you will need to write.
The Iterative Design Recipe says
- Perform information analysis for the new feature.
- Modify data definitions as needed.
- Update existing functions to work with the new data definitions.
- Write a wishlist of functions for the new feature.
- Design the new functions following the Function Design Recipe.
- Repeat for the next new feature.
We will study this pattern in the context of the
2htdp/universe
module, which allows us to create
interactive animations. You will learn:
- How to identify the relevant information for an interactive animation
- How to design the data to represent that information
- How to use structural decomposition to guide the development of programs involving multiple data definitions
- How to add new functionality to a working program using the Iterative Design Recipe
Course Map

Here's another view that shows where we are in the course:

Readings
Read the Prologue and Part I from our textbook, which introduce you to programming in Racket's Basic Student Language, using fixed-size data.
Resources
Lessons
- Lesson 3.1: Introduction to Universe Programs
- Guided Practice 3.1: Stopping the Falling Cat
- Lesson 3.2: How to Design Worlds
- Lesson 3.3: Draggable-Cat
- Lesson 3.4: Two Draggable Cats
Problem Set
Problem Set 03 was assigned on Monday, 30 January.