Assignments & Projects
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 (other than your teammate for the problem-solving challenge).
When you write down your solution, it MUST be close-book. This is to make sure you truly understand and can recreate the solutions.
You must use LaTeX to prepare your solution. Here you can find sample code for writing solutions using LaTeX.
Entrance Exam, Programming Basics, and Problem-Solving Challenges
All problems will be given on codeforces, so we do not post the problems here.
We will use CodeForces to submit and test codes. You also need to submit a short report to describe your algorithm and specify your submission id. Here is a guideline about using CodeForces.
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.
You need to submit a brief report on how you solved these problems, including:
- Your name, SID, and your codeforces ID;
- Specify which submission is yours (there is a unique id for each submission);
- Describe the algorithm you designed;
- Show cost analysis if necessary.
You will not get the point if you don’t provide the report to explain how your algorithm works.
The Entrance Exam has 5 problems, each worth for 1 point. The Programming Basics has 10 problems, and each problem worth 2.5 points—1 point for multiple testcases, and if you pass them all, you will receive another 1.5 points. If you solve all problems in Programming Basics, you will get 20 points instead of 15 points. The Problem-Solving Challenges also has 10 problems, and each problem worth 3 points—1.5 points for multiple testcases, and if you pass them all, you will receive another 1.5 point. If you solve all problems in Problem-Solving Challenges, you will get 30 points instead of 20 points.
The Problem-Solving Challenges is reasonably challenging, so we allow two of you to be in the same team, and you only need to submit the code once (and both of you submit the reports, referring to your team).
Since there are 20 problems in Programming Basics and Problem-Solving Challenges, we put three deadlines in 4/8, 4/20, and 5/7, so you can spread the work and report-writing evenly to the entire quarter.
For each deadline, if you have fully solved at least four problems before the first deadline or between two deadlines and submit the report on time, you will receive two bonus points.
You can get more than 100% for your final grade. Indeed, many of you will, and those of you will receive A+ in CS 219.
Written Homework Assignments
There will be three written homework assignments, similar to normal written homework in other courses. Each assignment has 10 points. You must use LaTeX to prepare your solution.
CS 219 has a project.
More details will be given later.
In the last two weeks of lectures, each student will present an algorithm. The time length and detailed requirement will be decided based on the number of attending students, and details will be announced later.