Tentative plans call for six programming/homework assignments. Expect the workload to be heavy.
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. The pre-assignments will count for 10% of your final grade. There will also be a midterm exam and a final.
Numeric course grades will be calculated 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. In fall 2000 there were 101 students who completed the course. You can look at the distribution of final grades if you're curious.
The programming assignments will be graded according to the following criteria (of roughly equal importance):
All assignments will be handed in electronically; watch the newsgroup for instructions. In general, you will need to put every assignment in a separate Unix directory containing both your source code and your write-up.
We will strive to return assignments and homework within one week of
the due date.
Grades will returned to you via e-mail to your CS department account.
If you do not want to read this account on a regular basis, be sure to
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
Your write-up for each programming assignment should include everything
a typical user would need
to run your program, and everything a software maintainer (or grader!)
would need to understand (and evaluate) your code.
Some 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 coherently written,
using full sentences and paragraphs, basically like a research report.
This writeup is important! It will have a major effect on your
grade.
Write-up files must be in plain ASCII or PDF format, and
must be named
Watch the newsgroup newsgroup
for more detailed instructions from the TAs.
There will be opportunities for extra credit on the assignments and
exams. Extra credit will be considered after making the first
cut at letter grades for the course. If you're near the top of your
bracket, or the amount of extra work you've done is particularly large,
you can expect it to push you up a grade. Last year approximately one student in ten
received received a higher grade as a result of extra credit.
This is a big class (we have about 80 registered as of the beginning of
the semester). We're meeting in a large lecture hall. There's no way
this is going to be as intimate and interactive as an 8-student seminar.
At the same time, if all the class interaction goes one way you might
as well be watching TV. So please participate! Ask questions. If
there's something you don't understand, make me stop and explain it
again. There are probably a dozen people sitting around you who didn't
understand it either, but don't have the guts to say so.
In other large classes you may have seen instructors experiment with
tricks (e.g. pop quizzes) to make you come to class. I'm not going to
do that. If you want to skip class, feel free. You're paying big bucks
for an education here, and if my lectures don't provide any value added
then I'm not doing my job. (On the flip side, if you don't care about
the value added, why aren't you taking correspondence courses from
home?) My experience has been that students who skip lecture generally
don't do well in the course.
Note that I reserve the right on exams and homework to ask
about anything I've covered in class, even if it isn't in the book or
lecture notes. I will be posting my lecture notes on-line, but I will
not be putting any effort into polishing them for public
consumption. Their principal purpose is to remind me of what I want to
talk about. If you find them helpful, great. If not, sorry.
One final note: assuming you come to class, please be sure to come on
time. I expect to start class at 12:30 sharp, and late arrivals disturb
the folks who are already there. (I also start class with
announcements, which you probably don't want to miss.)
It is my strict policy not to accept late assignments.
Exceptions will be made only under the most dire of circumstances.
Note, however, that I am extremely generous with partial credit, so
turn in what you have.
Every semester I have students who let a due date pass.
When I ask them what happened they say "Oh, I didn't finish, so I didn't
turn anything in." Then I have to give them a zero. If they had turned in
even some reasonable preliminary thoughts on how they might have done the
assignment — without a single line of code — they often
could have received as much as 40% of the total points. This can mean
the difference between letter grades at the end of the semester.
So if it looks like you aren't going to make a due date, don't keep debugging
down to the wire. Stop an hour early and take the time to organize what you
have and put together a write-up that presents it in the best possible light.
Your transcript will love you for it.
One additional warning: do NOT assume that you will get an
extension if there is a hardware failure in the lab at the last minute.
Students who wait until the last minute to complete their assignments
are taking a calculated risk. If you want to minimize the risk, you can
turn in a preliminary version early and a final version at the deadline;
we'll grade the final version only. (Please do not abuse this option by
doing multiple turnin-s: two is fine; six is not!)
Student conduct is governed by the College
Academic Honesty Policy, the
Undergraduate Laboratory Policies
of the Computer Science Department, and the
Acceptable Use Policy of Academic Technology Services.
I helped to write two of these policies personally. I believe in them
strongly, and will enforce them aggressively.
I work under the assumption that students are honest. I will not go
looking for exceptions. If I discover one, however, I will come down on
it very hard.
This past year I referred five cases to the College Board on Academic
Honesty, and resolved several additional cases directly with the
students involved.
The following are additional details specific to CSC 173.
Exams in CSC 173 must be strictly individual work.
Collaboration on homework and programming assignments is encouraged
at the level of ideas. Feel free to ask each other questions,
brainstorm on algorithms, or work together at a blackboard. Be careful,
however, about copying the actual code for programming assignments, or
copying the wording for written assignments. This sort of collaboration
at the level of artifacts is permitted if explicitly
acknowledged, but usually self-defeating. Specifically, you will
get zero points for any portion of an artifact that you did not
transform from concept into substance by yourself. If you neglect to
label, clearly and prominently, any code or writing that isn't your own,
that's academic dishonesty.
The principle behind the collaboration rule is simple: I want you
to learn as much as possible. I don't care if you learn from me or from
each other. The goal of artifacts (completed exams, homework, and
programs) is simply to demonstrate what you have learned. So I'm happy
to have you share ideas, but if you want your own points you have to
internalize the ideas and then craft them into an artifact
by yourself.
(Note that this principle puts a low premium on originality. For the
purposes of this one course I don't care if you come up with an
idea yourself or get it from somebody else, so long as you demonstrate
that you understand it.)
There are some circumstances under which you may want to collaborate on
an assignment. You and a friend, for example, might create independent
parts of an artifact, in which case you would each get the points
pertaining to your portion, and you'd have the satisfaction of seeing the
whole thing work. Or you might get totally stuck and copy one subroutine
from a friend (maybe someone who took the course before), in which
case you could still get the points for the rest of the assignment (and
the satisfaction of seeing the whole thing work). But if you want
all the points, you have to write everything yourself.
For purposes of this class, academic dishonesty is defined as
.forward
in your home directory on the CSUG lab machines.)
If you have any questions about your grades, see one of the TAs.
Write-up (README) files
README.txt
or README.pdf
,
correspondingly.
Extra Credit
Class Participation
No Late Assignments
Academic Honesty
Details of Specific Assignments
Back to the course home page