Assignments
[Latex Template] [Programming Guidance]
Please carefully read the Academic Integrity Policy before you start working on the homework assignments.
In short, you can get help from the instructors, TAs, textbooks (or relevant books), the Internet, or discussions with your classmates, but you must cite them fully and completely (i.e., provide citations to the book or website link, acknowledge the other students who had discussions with you). Again, you are NOT allowed to:
When you write down your solution, it MUST be closed-book. This is to make sure you truly understand and can recreate the solutions.
π Entrance Exam
There is an entrance exam for this course. There are 5 programming problems, covering several important algorithms you should have learned in undergraduate algorithm courses (simple sorting and data structures, greedy, DP, graph algorithms). Each of them should only take a few lines of code. You need to finish them in the first week. Each of them is worth 0.5 points in your final grade. Ideally you should pass all of them (and get 2.5 points). β I would not recommend anyone getting < 2 points to take the course. If you feel the entrance exam problems are hard, then unfortunately you are not ready to take CS 218 yet.
π Assignments
There will be a total of 5 assignments, each including both written and programming problems (the first programming assignment is the entrance exam). We have 10 deadlines, which help push you to plan ahead to work on the assignments π
In particular, you need to finish the training programming problems in the first week (except for HW1). Generally, they are simpler questions and are not too hard to finish within one week.
For each assignment, there are 6 basic points, and usually 1-2 bonus points available.
- About 2-3 points are for the required training programming problems.
- The other 3-4 points are for the 2 or 3 required written problems.
- Then, we will have 2-3 bonus problems for each assignment, each worth 0.5 points. These are more challenging and advanced problems. They are mostly programming problems but can be written problems in HW1.
- The total homework portion of the final grade is 24%: each homework (HW1 includes the entrance exam) is worth 6 points, and the highest 4 out of 5 will be counted toward your final grade.
- You can get more than 6 points for each assignment. This also means you can get more than 100 points for your final grade, which will give you an A+. This means you have put tremendous effort into this course! Indeed, many of you (usually 10-15%) can achieve this! You should definitely try!
| Assignment | Release Date | Programming Deadline | Written Deadline |
|---|---|---|---|
| HW1 | 3/29 | 4/5 (entrance exam) | 4/10 |
| HW2 | 4/11 | 4/15 | 4/24 |
| HW3 | 4/25 | 4/29 | 5/6 |
| HW4 | 5/9 | 5/13 | 5/20 |
| HW5 | 5/23 | 5/27 | 6/2 |
π Written Assignments
You must use LaTeX to prepare your solutions. Here you can find sample code for writing solutions using LaTeX.
In grading, we will reward not only correctness but also clarity and simplicity. To avoid losing points for hard-to-understand solutions, you should make sure your solutions are either self-explanatory or contain good explanations. Please understand that grading your assignments is a lot of work for your TAs and readers, especially determining the correctness and cost bounds for your algorithms. We reserve the right to manually deduct points for solutions that are conceptually correct but do not show a sincere attempt to explain the ideas clearly.
π» Programming Assignments
For all programming assignments, you will submit them on CodeForces. You can find a guidance document here. You still need to submit a short report in your write-up about each of the programming problems. The report does not need to be very long, but should contain:
- CodeForces ID and submission ID.
- A short description of your algorithm.
- Some analysis of your algorithm (time complexity, correctness, etc.) if needed.
We run automatic code comparison programs on student solutions. These programs are very good at detecting similarity between code, even code that has been purposefully obfuscated. Such programs can compare a submitted assignment against all other submitted assignments, against all known previous solutions of a problem, etc. The signal-to-noise ratio of such comparisons is usually very distinctive, making it very clear what code is a studentβs original creative work and what code is merely transcribed from some other source. Cheating is simply not worth the risk.