Guidelines for Assignments

The grade for this course is determined by four computer projects related to the material covered in class. Some of the assignments may seem deceptively easy, but try to avoid putting the assignments off until the last possible minute. One of the most important things to learn about programming is that it is an unpredictable venture, and a simple task often takes more time than you would think at first glance. The purpose of the assignments is to give you an opportunity to write real programs which solve real problems. Your goal should not be to simply put together a program which gets the right answer for a particular set of data, but to develop a programming style which will allow you to be comfortable in solving problems which you will encounter in your future work.

You may find it useful to use a word processing program like troff, TeX or LaTeX when writing your reports, but this is not required. If you have an interest in learning how to produce attractive electronically typeset documents, this may be a good time to learn, but the focus of these assignments is not to produce a pretty report. Since I will be grading the assignments with a red pen, I would appreciate it if you don't use red ink in preparing your report.

Each assignment should consist of the following sections:

  1. An introduction, explaining in your own words what the goal of the program is, and a brief overview of your strategy in solving the problem. In other words, this first section should outline the reasoning you used as you figured out how to get the assignment completed.
  2. You should include in your assignments the complete source code of the program which you wrote to solve to the problem. If you wish, you can print your programs in a very compact form using the UNIX utility enscript, or you can simply use the UNIX command lpr to print them out.
  3. Please provide a copy of the actual output of your program, as well as a copy of any input data, or a description of the data if it is very large or provided as part of the assignment. If there are parts of the output which are not self-explanatory, please be sure to annotate them so I can figure out what you are doing.
  4. Each assignment should contain a conclusion, which answers any specific questions raised in the assignment, as well as reporting on any interesting findings which you made while you were working on the assignment. If you feel you've encountered a principle or concept which has helped you understand things better, please don't hesitate to mention it, both for your own clarification, and so that I can get a better idea of how you are approaching the tasks at hand.

Your report need not be in any standardized format, but all of the above information should be included, and you may find it convenient to organize your work into the four sections described above.

You can give me the assignments on paper, or you can email a single attachment (PDF, Word, Open Office, etc.) containing your report and code to

Phil Spector