Most programming assignments will have two due dates. The first will be a trivial “pre-assignment” whose purpose is to force you to start thinking about things. The second will be the main due date. There will also be an in-class midterm exam and a cumulative final during exam week. Several past exams (with suggested answers) are available on-line as study aids. As in some previous years, I will be requiring the review exercises in the textbook (“Check Your Understanding” questions) to be completed and turned in before the class day on which the material is to be discussed.
End-of-semester numeric scores will be weighted roughly as follows:
Letter grades will be assigned by subjectively identifying brackets in the numeric scores. There is no pre-determined curve. In particular, I have no objection to giving all high grades (or all low grades) if it seems appropriate. As noted on the policies page, extra credit will be available on many of the assignments and the exams; it you do enough, it may move you up a grade. Three students (out of 63) benefitted from this in 2015; three (out of 31) in 2013.
Programming assignments will be handed in electronically
using the script
~cs254/bin/TURN_IN on the CSUG network.
You should run the script in a directory containing:
scriptprogram useful for capturing output; read the man page.
README.pdffile (see below).
Be sure to remember the no late assignments policy. If you don’t manage to complete the assignment on time, turn in what you have. I will be very generous with partial credit. If you don’t turn in anything by the due date, you will get a zero.
Be sure to check Blackboard frequently for any additional instructions from the TA or instructor.
We will strive to grade assignments within
one week of the due date, at which point grades will be available to
you via Blackboard.
Additional information may be sent to your UR or CSUG mail
account. If you don’t read the CSUG account on a regular basis,
you should forward it to an account that you do read regularly. (To
forward mail under Unix, put your preferred e-mail address all by
itself in a file named
.forward in your home directory on
the CSUG lab machines.) If you have any questions about your grades,
please consult the Grad
TA. If he is unable to resolve the issue, come see me.
Your README file for each assignment should contain whatever
information you think is necessary for a typical user to run your
program and for a software maintainer (or grader!) to understand (and
evaluate) your code. Much of this information may be included on the
original assignment web page; you only have to fill in the parts we
didn’t provide for you already. Information for the prospective user
includes details on calling conventions, input and output data
formats, limitations, bugs, and special features. Explain both the
negative aspects of your program (limitations, known bugs) and the
positive aspects (extensions, special features). If you don’t include
the former, we will assume you didn’t realize the limitations were
there. If you don’t include the latter, you may not get extra credit.
For the person who has to understand the insides of your code, you may
need to describe your choice of modularization (abstractions), data
structures, and algorithms. Be sure to explain anything you did that
is likely to be different from what other students may have done, and
justify any design decisions for which the rationale isn’t immediately
clear. Your write-up should be clearly written, using full
sentences and paragraphs. This writeup need not necessarily be long,
but it is important. All writeups must be in plain text
README.txt) or Adobe PDF (
format. Other formats (e.g., Word or postscript) will not be
For each programming project, points will be divided roughly 80/20
between the code itself and the external documentation
README file). A more detailed breakdown
You are encouraged to share ideas with fellow students, but only one person or team can get credit for actual code (see the course rules for academic honesty).