We encourage you to work in groups, share ideas, and discuss possible solutions. However, you are individually responsible for writing up and submitting your answers, and for acknowledging with whom you worked. You should not be handing in identical files, duplicated among the members of your “team”.
Code should run in MIT Scheme or Dr Scheme, as used on the machines at Brandeis (if you use another interpreter, please be sure to check that it runs in MIT Scheme or Dr Scheme too—).
You should always submit a complete file containing parseable Scheme code. In general, for full credit your solution must be loadable and runnable at the Scheme prompt. When the grader tests your homework, he will do so by typing (load "filename.scm"). If your code does not cleanly load, or crashes when running, please be sure to clearly state this fact when submitting your solution. Keep in mind that much later in the semester, as assignments become more difficult, we may be more lenient in this respect.
Please note that only plain text (ASCII) files are accepted. This in particular excludes Microsoft Word, Adobe PDF, DVI, or any other arbitrary (binary) format.
(From the class Fact Sheet) Assignments handed in n days late (weekdays and holidays included will have nt/10 points subtracted from the grade, where t is the total point score for the assignment. The only exceptions will be genuine personal difficulties and medical emergencies, as judged by the teaching fellow.
In most of the class assignments you will be given some code and then asked to improve upon it. You should adhere to the following:
This gives the file the following format:
;;;this is the given code
((( Given Code )))
;;; HERE STARTS MY CODE
;;; Problem 1
((( My code for Problem 1)))
;; My listing for code 1
;;; Problem 2
((( My code for Problem 2)))
;; My listing for code 2
;;; Problem n
((( My code for Problem n)))
;; My listing for code n
Remember: If you're asked to re-define a procedure that you have been given, then as long as your procedure definition appears below the original procedure definition, Scheme will use your definition when the program is loaded.
The only exception from this format, will be Problem Set 3: “The Stability of Marriage”.
Your solution to every problem should contain a listing -- proof that your modified code works. Since it is good programming practice to test everything you write, providing a listing should simply be a matter of cutting and pasting from your Scheme terminal to your editor. If your code “crashes”, and you haven't been able to resolve why, be sure to provide a listing of how it crashes in order to receive partial credit. Solutions submitted without listings will receive zero points.
In some cases you may edit your listing for the sake of brevity. In the case of the lunar lander, for instance, you may provide the first several and last several lines of a representative “game”.
Here is a snippet of Scheme code I wrote for an advanced AI class last year. Don't worry about understanding the code—the important thing to notice is that the code is well documented, and I have provided a listing of the output.
The problem sets typically consist of two parts