CS 475: Homework Policies
If you have any questions or concerns about these policies, please don't hesitate to ask in lecture, during office hours, or on Piazza.
Homework Logistics: How to submit
-
All homework solutions must be submitted electronically via Gradescope. Submit one PDF file for each numbered homework problem. Gradescope will not accept other file formats such as plain text, HTML, LaTeX source, or Microsoft Word (.doc or .docx).
-
You can register with Gradescope using any name and email address you like. If you are using an alias or a non-university email address on Gradescope, please tell us who you are so we can give you credit for your homework. If you are not logging into Gradescope with your real name or university email address, do not include your real name or your university email address in your homework solutions.
-
Homework solutions may be submitted by groups of at most three students. We strongly encourage (but will not require) every student to work in a group with at least one other student. Students are are responsible for forming their own homework groups. Groups may be different for each numbered homework problem.
-
For group solutions, exactly one member of each group submits the solution to each problem. Even if the groups are identical, the submitter may be different for each numbered homework problem.
-
Whoever submits any group solution must also submit the names of the other group members via Gradescope. Gradescope will then automatically apply the grade for that submission to all group members. If this information is not entered correctly, the other group members' grades will be delayed or possibly lost entirely.
-
If you discover that your name was omitted from a group homework submission, please submit a regrade request.
-
As error correction, each submitted homework solution should include the following information in large friendly letters at the top of the first page.
- The homework number
- The problem number
- Your GradeScope name
- Your Gradescope email address
For group solutions, include the Gradescope name and email address of every group member.
We will not accept late homework for any reason.
-
Gradescope automatically stops accepting submissions at the deadline. You can replace your submission as often as you like before the deadline; only your last submission before the deadline will actually be graded. We strongly recommend submitting something well before the deadline, to avoid any last-second emergencies.
-
To offset this lateness policy, we will drop your lowest homework score.
-
We may forgive homework under extreme circumstances that prevent the submission of a significant fraction of the homework, such as a documented disability, illness, injury, or other emergency. We will compute your final course grade as if your forgiven homework simply do not exist; your other work will have more weight. Students requiring accomodation for a disability should first contact DRES. Please ask Mahesh for further details.
Please make it easy for the graders to figure out what you mean in the time they have to grade your solution. If your solutions are difficult to read or understand, you will lose points.
Be Honest
- Write everything in your own words, and properly cite every outside source you use. We strongly encourge you to use any outside source at your disposal, provided you use your sources properly and give them proper credit. If you get an idea from an outside source, citing that source will not lower your grade. Failing to properly cite an outside source thereby taking credit for ideas that are not your own is plagiarism.
The only sources that you are not required to cite are the official course materials (lectures, lecture notes, the textbook, homework solutions, and exam solutions from this semester) and sources for prerequisite material (which we assume you already know by heart).
- List everyone you worked with on each homework problem. Again, we strongly encourage you to work together, but you must give everyone proper credit. If someone was particularly helpful, describe their contribution. Be generous; if you're not sure whether someone should be included in your list of collaborators, include them. For discussions in class, in labs, or in office hours, where collecting names is impractical, it's okay to write something like "discussions in class".
-
Please see our academic integrity policy for more details.
Be Clear
-
Write legibly.
If we can't read your solution, we can't give you credit for it. We strongly recommend typesetting your homework using LaTeX. You are welcome to submit scans of hand-written homework solutions, but please make sure they are clear and easy to read. If you have sloppy handwriting, use LaTeX.
-
Write sensibly.
You will lose points for poor spelling, grammar, punctuation, arithmetic, algebra, logic, and so on. This rule is especially important for students whose first language is not English.
-
Write carefully.
We can only grade what you actually write, not what you mean. We will not attempt to read your mind.
- Don't submit your first draft.
Revise, revise, revise. First figure out the solution, then think about the right way to present it, and only then start writing what you plan to submit.
- State your assumptions.
If a problem statement is ambiguous, explicitly state any additional assumptions that your solution requires. Please also ask for clarification in class, in office hours, or on Piazza! Yes, even if the assumption is “obvious”.
- Don't submit code.
Describe your algorithms using clean, human-readable pseudocode. Your description should allow a bright student in CS 225 to easily implement your algorithm in their favorite language, using a software library containing implementations of every algorithm we’ve seen in class.
Be Concise
- Omit irrelevant details. Don't write "red-black tree" when you mean "balanced binary tree" or "dictionary". Don't write "depth-first search" when you mean "whatever-first search". Don't submit code; we want to see your ideas, not syntactic sugar.
-
Don't regurgitate. Don't explain binary search; just write "binary search". Don't write the pseudocode for Dijkstra's algorithm; just write "Disjktra's algorithm". If the solution appears on page 6 of Jeff's notes, just write "See page 6 of Jeff's notes." If your answer is similar to something we've seen in class, just say so and (carefully!) describe your changes. You will lose points for vomiting, especially if you get the details wrong.
Content: What to write
- Answer the right question. No matter how clear and polished your solution is, it's worthless 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! This is especially important on exams.
-
By default, if a homework or exam problem asks you to describe an algorithm, you need to do several things to get full credit:
- Describe the precise problem that your algorithm is supposed to solve. This is often the hardest part of designing an algorithm.
- Give a concise pseudocode description of your algorithm. Don't regurgitate, and don't turn in code!
- Describe a correct algorithm.
- Justify the correctness of your algorithm. You must provide a brief justification for your solutions, as evidence that you understand why they are correct. Unless we explicitly say otherwise, we generally do not want a complete proof of correctness—because complete proofs would be too long, tedious, and unenlightening—but rather a high-level sketch of the major steps in the proof.
- Analyze your algorithm's running time. This may be as simple as saying "There are two nested loops from 1 to n, so the running time is O(n)." Or it may require setting up and solving a recurrence, in which case you'll also have to justify your solution.
- Describe the fastest correct algorithm you can, even if the problem does not include the words "fast" or "efficient". Faster algorithms are worth more points; brute force is usually not worth much. We will not always tell you what time bound to shoot for; that's part of what you're trying to learn. However, if your algorithm is incorrect, you won't get any points, no matter how fast it is!
Some problems may deviate from these default requirements. For example, we may ask you for an algorithm that uses a particular approach, even though another approach may be more efficient. (Answer the right question!)