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:
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
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
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.
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 firstname.lastname@example.org.