CSC 160
Homework 2

Assigned Sept. 8, due Sept. 15

Problems

This looks like a lot of problems, but most of them are really short -- a line or two. For example, exercises 5.3.7, 5.4.7, 5.5.7, 5.6.7, and 5.7.5 together make up a single function definition about ten lines long. In addition, you've already done some of them in class.


What to turn in and how

For problems 3.7.2 (a box diagram), 4.3.2 (identifying parameters and arguments), and 4.6.3 (another box diagram), I recommend printing out the relevant Scheme code on paper, drawing on the paper, and turning in the paper. (This can be done on the computer, but I think it's more hassle than it's worth.)

For the programming problems (4.2.whatever, all of chapter 5, and checkerboard4), I want to see all the steps of the recipe. I recommend putting all of the programming problems in one big Definitions pane; by the time you're done, the contract, definition (including skeleton, inventory, and body), and examples of each function should be together, looking like Figure 5.2 of the textbook.

It's difficult for me to grade your testing of these functions, but be assured that I will test them, and if they don't work, it'll hurt your grade, so it's to your advantage to test them before turning them in.

Send me an e-mail, attaching the file containing your saved Definitions pane. (Make sure to save it, then test it, then e-mail it to me, or I may end up grading an out-of-date version.) Make sure to put your name in the Subject line!

If there's a particular function that you can't get working, turn in as many steps of the recipe as you've managed to do, commented out (so they don't mess up the other functions).

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.

General advice

For all assignments in chapters 5 and later, be sure to follow the design recipe. (It couldn't hurt for the problems in chapter 4 either, but it's not required.)

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 3, so if you don't get along with this partner, remember it's only for a week.

Grading standards

Error log:       /25
(I'm not grading on how many or how few errors you encountered, only on whether you recorded them correctly.)

One of Exercises 3.4.2-3.4.6:    /10
One of Exercises 3.5.1-3.5.4:    /10
Exercise 3.7.2:    /10
One of Exercises 4.2.1,4.2.2,4.2.4:    /20
Exercise 4.3.1:    /10
Exercise 4.3.2:    /10
Exercise 4.6.2:    /10
Exercise 4.6.3:    /10

The table below has columns for each step in the design recipe. You won't turn in a separate skeleton, inventory, and body, but rather write a skeleton and then add inventory and body to turn it into a complete definition. However, if you don't get the definition working, you'll still get partial credit for a correct contract, skeleton, and/or inventory.

Function name Contract Examples Skeleton Inventory Body
bullseye /5 /5 /5 /5 /15
checkerboard2 in book /5 /5 /5 /15
bullseye /5 /5 /5 /5 /15
lollipop /5 /5 /5 /5 /15
checkerboard4 /5 /5 /5 /5 /15

General skills:

Following directions /10
Writing contracts from word problems /10
Choosing examples /10
Choosing names, indentation, white space... /10
Coding /10
Code re-use and function composition /10

Total:         /345


Last modified:
Stephen Bloch / sbloch@adelphi.edu