A large portion of this particular report will be used to describe the procedures you wrote. There are two standard ways to describe a complicated procedure, a top-down approach and a bottom-up one. In the top-down approach, you begin with the procedure, break it down into smaller, slightly simpler procedures, break those down into still simpler procedures and so on. In contrast, the bottom-up descriptions start with the most basic procedures, describe how those procedures can be used to create more complicated ones, and continue in this manner, ending with the most complicated procedure. You can also describe a procedure by comparing it to a similar one. It's up to you to determine whether a top-down or a bottom-up approach is more appropriate for your lab (given your theme).
When we grade reports, we look carefully at the verbal descriptions of the code so that we can try to determine whether you truly understand how your code works. Also, by demanding that you write clear explanations, we are trying to help you develop an important skill. After you graduate, you will no longer have the luxury of having your writing read by people who already understand what you are explaining. We want to prepare you for that day.
We also look at the code and the testing, to make sure that you wrote accurate and working code and that you tested it adequately.
We've included two documents to give you a better sense for what we expect from your project write-up. The first is a sample write-up for a much shorter project. This sample write-up was done using DrScheme, which isn't really a word processor, so the appearance isn't very fancy. However, we wanted to show the minimum we'd be satisfied with. If you want to do something similar to this with DrScheme, we have a separate document with tips on doing so.
On the other hand, it isn't very hard to make a fancier report using a word processor, such as Applix on the Linux machines, and we recommend doing so. The lab assistants should be able to help, answering questions you might have about this word processor. You should use Copy and Paste to get your Scheme definitions into the word processor, rather than manually retyping them. Students who retype inevitably make typos and wind up handing in procedures that couldn't possibly have worked. You can also Copy and Paste in the same way to get expressions and values from the interaction window, so long as the values aren't images. For the quilt images, Applix has a "Snap to clipboard" feature in the Edit menu that lets you take a snapshot of a portion of the screen, which you can then Paste in. Put your Scheme procedures into the ``Courier'' font. In this font, every character is the same width (like on a typewriter, or in the DrScheme program), so the indentation will line up correctly. If you have problems getting Applix to print, your "preference" settings may not be configured right; a lab assistant should be able to help with this.
The other document to consult is entitled Suggestions for clear reports in computer science courses, which pretty much says it all.
In general, be sure to read through your report and fix any problems you find, either in general presentation or in spelling and grammar. Not only do spelling and grammar errors detract from the clarity of your report, they suggest that you judged the report not to be worth the time to read. If you aren't willing to read your own report, who will be?
You can also get some sense of how this project report will be graded by looking at the grading sheet that we use.
(load "~mc27/labs/quilting/quilting.scm")by typing the line into your definition window and hitting execute. Now you should be able to see each block by evaluating its name in the interaction window. In addition to the blocks mentioned in the book, we have also included two solid blocks,
white-bb. (On machines outside our lab, download quilting.scm and load it in.)
quarter-turn-rightprocedures are built into our Scheme. Try them out as in exercise 1.8 on page 16 of the text, and make sure you understand what each does and how combinations behave. (We should point out here that the code from the book is available from the web page
http://www.gustavus.edu/~max/concabs/code/; simply follow the link for the chapter you want. Using these files will substantially reduce your typing.) Note that names such as
rcross-bbcontinue to name the same, unmodified basic block throughout. The procedures give you back transformed copies of the image rather than changing the original image in any way. Write a precise description of what each of these two primitive procedures does.
Be sure to save your definition window early and often. (Just click the Save button.) Note that the next time you use DrScheme, you can simply open this file by using the File menu.
mirror-image. Be creative!