- How to submit homework
- Form: How to write
- Content: What to write
- Grading and regarading
- Final course grades
- Academic integrity
How to Submit Homework
Since CS 373 usually has about 200 students every semester, we desperately need your help to make sure homeworks are graded and returned quickly. The graders have to examine more than ten thousand pages of homework submissions each semester! Any homework that does not follow these (admittedly picky) instructions will automatically receive a grade of zero. This is not a joke.
- Turn in your homework on time. Homework must be received by midnight on the due date, Champaign time. No late homeworks will be accepted without the instructor's written permission, which must be obtained at least 24 hours before the due date. To offset this somewhat draconian measure, we will drop the lowest grade of all the homeworks; this should take care of any unforeseen circumstances.
Format
- Use standard US Letter paper (8.5" × 11"). Use both sides of the page whenever possbile. (If you are using a recent version of Linux to typeset your homework, your system may be configured to use A4 paper by default.)
- Start each numbered homework problem on a new sheet of paper. In order to make the grading faster and more consistent, each homework problem will be graded by a single grader and returned as soon as it is graded.
- Clearly print your name, NetID, the homework number, and the problem number at the top of every page. For example: "Jeff Erickson (jeffe) HW0 #5". Without this information, the graders will have no idea who you are or what problem you're supposedly solving, so you'll get no credit for your work.
- Don't write your Social Security Number on anything!! Social Security Numbers are extremely valuable personal information. Anyone who knows your SSN can steal your identity with very little effort. It should only be used for financial transactions that are reported to the IRS.
- Nicely typeset homework will be given extra credit. I strongly recommend using LaTeX, which is far and away the best system for typesetting mathematics (and you will be typsetting mathematics). Nothing else even comes close, especially the crappy equation editor that comes with Microsoft Word.
Logistics
- Staple your homework together once in the upper left corner, with the homework's cover sheet on top. Do not use paper clips, tape, glue, spit, or rubber bands. Do not try to keep your homework together by folding or tearing. The course staff will not bring staplers to class, even on the days homework is due.
- Submit your homework in class or during any of the TAs' office hours. You can also slide homeworks under the TA office door, but this is not necessarily safe. Janitors have occasionally thrown away papers left on the floor around the TA offices (even though they aren't supposed to). Your homework may also slide all the way under someone's desk, never to be seen again. Do not submit homeworks to the instructor; he is fond of losing important pieces of paper.
Form: How to write
Please be nice to the graders! Make it easy for them to see what you're doing. If your answers are hard to read, the graders will be less sympathetic to your mistakes. All this goes for exam problems, too.
- Write concise, legible, and correct solutions. You will lose points for bad handwriting, spelling, grammar, arithmetic, algebra, logic, and so on. If we can't decipher what you wrote, you will get no credit. This is especially important for students whose first language is not English. If your handwriting is bad, it's time to learn LaTeX. (1337-5p33k = teh 5uxx0r!!)
- Use pseudocode or outline format to describe your algorithms. Do not turn in source code! Too much syntactic sugar distracts the reader (and the writer!) from what's the algorithm is really doing. On the other hand, raw English prose is also usually insufficient. See the textbooks and lecture notes for examples of the type of presentation we want. Ideally, your description should allow a competent programmer who has not taken 373 to easily implement your algorithm in their favorite language.
- Make the punch line obvious. Emphasize your final answers by putting a box around them, or using a highlighter, or some similar trick.
- Omit irrelevant details. Don't turn in the piece of paper you used to figure out your answer; copy the relevant information onto a new empty page. If the same algorithm works equally fast whether the input is an array, a singly linked list, a doubly linked list, or a binary tree, try to describe it so that a competent programmer can easily use any of these abstract data types.
- Include relevant details. If a problem statement is ambiguous, tell us what additional assumptions you made in your solution. For example, if the performance of your algorithm depends on how the input is represented, tell us exactly what representation you require. If your solution to a recurrence assumes a particular base case, tell us what base case you require.
- Don't regurgitate! If your answer is a simple modification of something we've seen in class, just say so and (carefully!) describe the changes. If the complete and correct answer is on page 263 of the textbook, the best solution you can submit is "See page 263 of the textbook." Period. Same with the lectures, the lecture notes, and previous exams or homeworks from the current semester. You will lose points for vomiting.
However, if you find a solution from some other source, such as a web page, a journal paper, another textbook, or a homework solution from some earlier semester, you must rewrite the solution in your own words and you must cite your source. Assume the graders have access to all the official course material, but nothing else. While we strongly encourge you to use any outside source at your disposal, remember that the homework is supposed to demonstrate that you understand of the material, not just how to use Google.
- Don't babble! If you don't know the answer, don't do a brain dump, hoping to get some partial credit for using the right key words. Part of what you're supposed to learn is how to tell when you don't know the answer. Answering "I don't know" (and nothing else) to any homework or exam question is automatically worth 25% partial credit for that question. If you try to fake it, you'll get nothing. A course average of 25% is an automatic F.
Content: What to write
Convince the grader that you understand exactly what you're doing.
- Answer the right question. Duh. No matter how clear and polished your solution is, it's worth absolutely nothing if it doesn't answer the question we asked. Make sure you understand the question before you start thinking about how to answer it. If something is unclear, ask for clarification!
- Justify all your answers. Unless the problem specifically says otherwise, every one of your homework and exam answers requires a proof. Without a proof, the correct answer is worth nothing. In particular, the sentence "It's obvious!" is not a proof -- many `obvious' things are actually false!
- If a homework or exam problem asks you to give/show/describe/develop an algorithm, you need to do several things to get full credit:
- If necessary, formally restate the problem in terms of combinatorial objects such as sets, lists, graphs, trees, etc. In other words, tell us what the problem is really asking for. This is often the hardest part of designing an algorithm!
- Describe the most efficient algorithm possible. The more efficient your algorithm, the more points you get. Brute force is usually not worth very much. We will not always tell you what time bound to shoot for; that's part of what you need to learn!
- Give a concise pseudocode description of your algorithm. But don't regurgitate! And don't turn in source code!
- Justify the correctness of your algorithm. You usually won't have to do this on exams.
- Analyze your algorithm's running time and space usage. This may be as simple as saying "There are two nested loops from 1 to n, so the running time is O(n2)." On the other hand, it may require setting up and solving a summation and/or a recurrence, in which case you'll also have to prove your answer is correct.
- Don't make the reader extrapolate. It is never enough to explain what happens during the first one or two iterations of an algorithm, and then say "and so on". If we can't tell just by looking what happens during the 17th, 42nd, or 31337th iteration, your description is incomplete. Algorithms or proofs that use phrases like "and so on", "etc.", "repeat this for all X", and "..." will get no credit. Those are perfect indications that your algorithm should have used a loop or recursion, or that your proof should have used induction, but didn't.
Grading and regrading
- Graded homework problems can be retrieved from the slots outside the TA office. The homeworks will be sorted by last name; please don't rearrange them while you hunt for yours. Graded midterms will be kept inside the TA office; you can retrieve them during office hours (or whenever the TAs are around).
- Homeworks can be regraded by submitting them to any of the TAs; exams can be regraded by submitting them to the instructor. If the problem is a simple arithmetic mistake, we will fix it immediately. Otherwise, you must also submit a written regrade request explaining why you think you were graded unfairly. The entire homework or exam will then be regraded from scratch. This means your grade can actually go down.
Regrade requests are due two weeks after the homework or exam is returned. Except for arithmetic mistakes, late regrade requests will be ignored.
We will readily admit, apologize for, and correct our mistake if you have been graded unfairly. However, please remember that "unfairly" means your grade is blatantly incorrect, or that you were graded more harshly than other people in the class, not just that you think the grading standard is too harsh.
Finally, please remember that each homework point is only 0.1% of your grade. Frivolous regrade requests will be met with the scorn they deserve.
Final course grades
- Homework and exam grades will be reported on the course web page, using the alias you provide on Homework 0. For privacy reasons, your alias should not resemble your name or NetID. By providing an alias, you agree to let us list your grades; if you do not give us an alias, your grades will not be liasted.
- Final course grades are assigned using the following algorithm. (What do you expect from an algorithms course?)
- Drop each student's lowest homework grade.
- Compute everyone's raw average, which excludes all extra credit points. Course work is weighted as follows: homework is 30%, each midterm is 20%, and the final is 30%.
- Compute everyone's adjusted average, which includes extra credit points, even from the dropped homework. (Extra credit points are not necessarily worth the same as regular points.)
- The following students automatically get an F:
These are not the only ways to fail!
- Anyone with an adjusted homework average below 50%
- Anyone with an adjusted course average below 25%
- Anyone with an adjusted course average over 95% gets an A+.
- Compute statistics for raw averages, excluding the outliers from steps 4 and 5, and use them to determine letter grade cutoffs. The mean is a borderline B-/C+, and each standard deviation is worth one letter grade.
- Compute final letter grades from adjusted averages, except for the outliers from steps 4 and 5.
- Adjust grades (only upwards!) at the instructor's whim.
This system ensures that extra credit can only increase your grade, that other people's extra credit does not affect your grade, and that the curve isn't skewed by the handful of geniuses and doofuses in every class. We expect roughly 25% of the students get an A- or better.
Academic integrity
This final section is unfortunately necessary, thanks to the actions of a very small minority of students.
Each student (or homework group) must write up their own solutions. We strongly encourage students to work together on the homeworks and to consult any outside resource at your disposal: other students, TAs, professors, textbooks, journals, conference proceedings, web pages, test files, etc. However, you must write your solutions in your own words, and you must excerise academic integrity. If you receive significant help from any source, you must identify that source in your solution. This will not lower your homework grade.
Directly copying someone else's work, or allowing others to directly copy your work, is plagiarism. Copying from any source without giving proper credit -- in particular, copying offficial solutions from earlier offerings of CS 373 -- is plagiarism. (Besides, some of those official aolutions were wrong!) For further information, see the University Policy on Academic Integrity, especially the section on plagiarism.
Because we expect students to be honest, we treat plagiarism and other cheating cases very seriously. The usual penalty for a first offense is a grade of zero on the homework or exam. The penalty for a second offense, or a particularly egregious first offense, is an F in the course. All cheating cases are reported to the department. Multiple offsenses can result in suspension or dismissal from CS program or from the university. More than one student has been expelled from the university (in part) because of cheating offenses in CS 373.
Regardless of whether it constitutes cheating, or whether you get caught, getting too much help on your homework will hurt your final grade. If you don't learn how to solve algorithmic problems on your own, you will fail the (closed-book, closed-notes) exams, which make up 70% of your final course average.
Jeff Erickson ([email protected]) 20 Jan 2004