[Latex Template] [Programming Guidance]

If you have any questions about the rules, you can first try to find them on CS141-FAQ.

Please carefully read the Academic Integrity 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 that had discussions with you). If you use any Again, you are NOT allowed to:

  • copy anything from the book or the Internet,
  • read or look at anyone else's solutions (write-up or code),
  • share your solutions (write-up or code) with any other students, during or after the completion of the course.
  • Directly use answers from AI tools, without citing the full conversation.
  • When you write down your solution, it MUST be close-book. This is to make sure you truly understand and can recreate the solutions.

    Some frequently asked questions about academic integrity can be found here. Other questions about assignments can be found here.

    • All deadlines can be found on the schedule page or the class Google calendar.

    • All written homework assignments will be available along with other course materials in the Dropbox folder.

    • All programming problems and the entrance exam are available on codeforces. You must first join the group to see the problems, see the instruction here.

    • All solutions of written and programming assignments are also available in the Dropbox folder.

    📃 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, 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 1 point in your final grade. The full marks are 4 points, mapping to 4% in your overall score. This means that you only need to pass 4 problems to get full marks. If you finish all of them, you will get 1 point bonus (5 points in total) and a bonus candy. Ideally you should pass all of them. ⚠ I do not recommend anyone getting < 3 points to take the course.

    If you cannot finish them in the first week, you are not ready for the course, and I suggest you to take prerequisite courses (or other relevant classes) and take CS218 again in the future (otherwise the course will also be too difficult to you).

    📝 Assignments

    There will be in total 5 assignments, each including both written and programming problems. We have 10 deadlines, which is help to push you plan ahead to work on the assignments 😜

    In particular, the “basic” programming problems will due one week earlier (except for HW1). Generally they are simpler questions and are not too hard to finish within one week.

    Each assignment have full marks of 10 points (mapped to 10% in your final score), and many bonus points available.

    • 6 points for required written problems. There can also be bonus points.
    • 4 points for basic programming problems. There are usually 2 basic problems, which ask you to implement simple problems very similar to the algorithms we covered in class.
    • 1 point of bonus problems, which are more challenging and advanced problems. There will be 2 such problems, 0.5 point each. If you solved any problem in this part completely (i.e., getting full marks), you earn one candy.

    This means that you can get more than 10 points. Those beyond 10 points will be counted as bonus. For all the bonus programming problems, if you finish them before the end of the last week, you can get half of the points but no candy.

    HW1 is special: you can view the entrance exam as the basic programming problems of HW1. The entrance exam is due on the first Sunday). There are also 6 points for the written part and 4 points for the programming part (i.e., the entrance exam). There is no special bonus part, but you can get at most 5 points for the entrance exam.

    There will be five assignments in total. You only need to work on four of them (you can choose which four of them). Each “assignment” is 10 points, including written and programming. If you work on all five of them, the highest four will be counted. If you register too late such that you miss the first assignment, this automatically means that you will work on the rest four assignments. You can view more details in our Q&A here.

    Note that if you give up one assignment (or the grade is dropped because it is your lowest-grade assignment), the bonus points will not be counted, either. But the candy will still be counted.

    🖋 Written Assignments

    You must use LaTeX to prepare your solution. 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 contains 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 does 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.