CSC 173, Fall 2001

Grading Policy

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 .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

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 README.txt or README.pdf, correspondingly.

Watch the newsgroup newsgroup for more detailed instructions from the TAs.

Extra Credit

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.

Class Participation

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.)

No Late Assignments

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!)

Academic Honesty

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

Details of Specific Assignments

Back to the course home page

Last Change: 26 October 2001 / Michael Scott's email address