Here's a list of clarifications/notes for project 4. 1) Start working on it now. This is a challenging (but fun!) project. 2) Bring your answers to the warmup exercises to tutorial on Monday/Tuesday. Part of your participation grade will depend on having completed these exercises. I haven't decided yet whether to go through them in tutorial with you or to look at them later, so make a copy for yourself. 3) As always, turn in ONE file in the end. More on the formatting later in this email. This single file should be submitted to the tutor. I'm going to start taking points off for sending multiple files, forgetting to send the right file, submitting files to project 0 instead of project 4 (and not resubmitting to project 4), etc. 4) The code is not compatible with DrScheme. If you really want to use DrScheme, you'll end up having to hack a number of things. If you are truly masochistic and want to adapt and debug the whole object system in DrScheme, talk to me first. 5) Take advantage of the LAs. Arrange your schedule so that you will be able to go to the lab when you need to. This project is complicated. 6) In other projects, you were required to turn in a single scheme file that I could load into a new instance of Edwin, evaluate with M-o, and see exactly the same results as what you claimed. This project is organized in a more complicated manner, where you're adding methods in here and there. In cases where you're asked to include full blocks of code (e.g. Exercise 5), include just that block of code (along with documentation and *concise* tests). In other cases, you're requested to only include snippets of code. For example, your writeup for exercise 2 should look roughly like the following. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Computer Exercise 2 ;; The following lines were added to the make-handler ;; portion of person. ; HAS-A: symbol -> list ; given the name of a subclass of thing, returns a ; list of objects of that type that this person ; currently possesses. 'HAS-A (lambda (type-name) ...your code here...) ; HAS-A-THING-NAMED: symbol -> list ; returns a list of all things with the given name ; that the this person currently possesses. 'HAS-A-THING-NAMED (lambda (thing-name) ...your code here...) ;; Tests (ask me 'has-a 'spell) ;Value: ((instance #[compound-procedure 63 handler])) (ask me 'has-a 'rocket-ship) ;Value: #f ...other tests here... ...other problems... In this writeup template, text between ellipses is stuff you should modify. Note that I've included brief documentation on each of the new methods as well as test cases. I have also put in a comment indicating where the bare code snippets came from. Note that as before, test results, comments, and other non-executable code should be sitting in comments (e.g. each line should start with a semicolon). -- --Gerald Dalley dalleyg@mit.edu