[Latex Template] [Programming Guidance]

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). 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.
  • When you write down your solution, it MUST be close-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 6 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 1 point in your final grade. Ideally you should pass all of them (and get all 6 points). โš  I would not recommend anyone getting < 5 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. You should consider taking CS 142 this quarter, which will also count toward your graduation requirements.

    ๐Ÿ“ Assignments

    There will be in total 5 assignments, each including both written and programming problems (the first programming assignment is the extrance exam). We have 10 deadlines, which is help to push you 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 90 basic points, and many (usually 30 to 40) bonus points available.

    • the 90 points for basic problems consist required written problems and training programming problems, usually distributed half by half.
    • the 30 to 40 points of challenge problems are more challenging and advanced problems. They may be programming or written problems. Usually there will be 3 such problems, 10pts each. You can work on any of them to get the 10 pts. If you solve more, they will be directly counted as bonus points. If you solved any problem in this part completely (i.e., getting full marks), you earn one candy.
    • The total homework points in the final grade is 45%: first homework is 6%, the later three is 3ร— 9%=27%, and the last one is 12%.
    • If you get 100 points in one homework, then you will receive the full point for this homework (yes, you need to solve some bonus problems). If you get more than 100 points, then can get more points (for instance, if you get 120 points in hw2, then itโ€™s 120%ร— 9%=10.8%). And yes, you can get more than 100 points for the final grade if you have solved many challenging problems, and if so, you will get an A+ in CS 218. (Usually 20% of you can achieve this! Awesome!)
    • For all the challenge problems, if you finish them before the Mar 13, you can get half of the points but no candy.
    Assignment Release Date Programming Deadline Written Deadline
    HW1 1/5 1/12 (entrance exam) 1/19
    HW2 1/19 1/26 2/2
    HW3 2/2 2/9 2/16
    HW4 2/16 2/23 2/29
    HW5 2/29 3/6 3/13

    ๐Ÿ–‹ 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.