coordinate-difference
)distance
)posn=?
)distance-to-origin
)swap-x-y
)scale-posn
)add-posns
)sub-posns
)choose-posn
)posn
as the model.
So use a posn
as your model!All of the problems are programming problems, so in principle you
could write them all in one Definitions pane. Unfortunately, if you
call run-animation
more than once in the same Definitions
pane and click "Run", it'll start each animation in turn, a
fraction of a second apart, and only the last one will actually work.
There are two solutions to this:
run-animation
calls except the one
you want to look at right now. (If I want to see a different one work,
I can change the commenting myself.)
The interactions pane will show only the examples (and their "right
answers") that you typed in the definitions pane; it will
not show the results of the animations. But turn it in anyway,
so I can tell that you tested your programs by themselves before
incorporating them into an animation. (If you don't do this, you'll lose
all the points for "test results" in the table below.)
If you're using check-expect
for your test
cases, you may not have anything in the interactions pane to turn in, so
don't bother.
Also turn in a log of how many errors of different kinds you encountered in the assignment, with brief comments describing each one ("mismatched parentheses" is self-explanatory, but more complex errors might need more description). Note that "errors" means not only error messages from DrScheme, but also wrong answers. You may do this using the PSP forms, or simply by keeping track in a text file or on paper and turning it in.
For every function you write, be sure to follow the design recipe. If a particular animation requires writing two or three functions, that means go through all the steps of the design recipe two or three times for that animation.
Be sure to choose meaningful names for functions and parameters, and watch for opportunities to re-use functions you (or the textbook) have already written.
This assignment is to be done in pairs, using the ideas from the "kindergarten" article. Choose a partner ASAP and schedule time to work together on the assignment. When you're finished, turn in one assignment with both names on it. You'll have a different partner for homework 6, so if you don't get along with this partner, remember it's only for a week.
Error log: /20
(I'm not grading on how many or how few errors you encountered,
only on whether you recorded them correctly.)
I sha'n't actually grade all the problems; consider the others "practice". For each function I grade, see the table below, which has columns for each step in the design recipe. You won't turn in a separate skeleton, inventory, and definition, but rather write a skeleton, then add an inventory, then add a body to turn it into a complete definition. However, if you don't get the definition working, comment it out and you'll still get partial credit for a correct skeleton and/or inventory.
Contract | Examples | Skeleton | Inventory | Definition | Test results | Working animation (if applicable) |
---|---|---|---|---|---|---|
/5 | /5 | /5 | /5 | /10 | /5 | /5 |
Following directions | /10 |
Writing contracts from word problems | /10 |
Choosing examples | /10 |
Choosing names | /10 |
Coding | /10 |
Code re-use and function composition | /10 |