Computer Science 226
Algorithms and Data Structures
Spring 2016

Course Information | Lectures | Flipped | Assignments | Precepts | Exercises | Exams


Below are links to the programming assignments. For each assignment, the assignment entry contains the programming assignment specification; the checklist entry points to clarifications, test data, and hints that might be helpful in completing the assignment; the submit entry links to the electronic submission system; and the collaboration entry specifies the collaboration policy. Once the assignment moves above the "Assignments below have not yet been updated for Spring 2016" part of the table, no significant changes will be made.

FAQ. This FAQ answers some commonly asked questions about assignment submissions, programming style expectation, and the readme.txt file.

1 Tue 2/9 Percolation not available not available not available TBA  
2 Tue 2/16 Deques and Randomized Queues not available not available not available TBA  
3 Tue 2/23 Autocomplete Me not available not available not available TBA  
4 Tue 3/1 8 Puzzle not available not available not available TBA  
5 Tue 3/22
Tues 3/29
Kd-Trees not available not available not available TBA  
6 Tue 4/5 WordNet not available not available not available TBA  
7 Tue 4/12 Seam Carving not available not available not available TBA  
8 Tue 4/19 Burrows Wheeler not available not available not available TBA  
Assignments below have not yet been updated for Spring 2016

Submission policy.  You must submit your solutions electronically via the Dropbox submission system, using your Princeton netID and password for authentication. Be sure to include your name, netID, and precept number at the top of every file you submit in the prescribed format. Also be sure to click the Check All Submitted Files button: it checks the header, compiles your files, runs a battery of unit tests, and reports the results. If you do not follow these instructions, you risk losing a substantial number of points.

You may resubmit and unsubmit files as needed up until the submission deadline. However, you may click the Check All Submitted Files button at most 10 times per assignment (at which point you get compile, checkstyle, findbugs, and API results but no correctness tests). To use a late day, students must check the checkbox on our online submission system, Dropbox, that indicates that their work is not complete. If the deadline has passed and the checkbox is not checked, submitted work will be graded as-is.

If you are working with a partner, only one partner (with the other partner present) submits the code and readme.txt; the other partner either submits no files or will leave the checkbox checked to indicate that none of the partner files should be graded. Both partners in total have 10 times to use the Check All Submitted Files button. For example, one partner may submit 7 times and the other may submit 3 before the Correctness checks are disabled.

Classwide competitions.  On some assignments, you may (optionally) submit your code to a classwide competition. We will time your programs and display the results in a public leaderboard. To enter the competition, submit your code along with a file nickname.txt. Whatever you put in nickname.txt will be used as your alias in the leaderboard. There is no official reward for doing well in the competition; however, you are welcome to use it as a guide for evaluating the performance of your program.

Coursera policy.   You are not permitted to use the Coursera autograders from Algorithms, Part I or II. Countermeasures are in place.

Lateness policy.   Programming assignments are due at 11pm on the date specified, with a 3-hour grace period. Late assignments are assessed a 4-point penalty per day or partial day: 0–3 hours late (no penalty), 3–27 hours late (4 points), 27–51 hours late (8 points), and so forth. Your first 16 lateness points are automatically waived. No additional lateness points will be waived without the recommendation of a Dean or a letter from McCosh Health Center.

Grading policy.  Your code will be graded for correctness, efficiency, clarity, and style (including comments). It is your responsibility to describe how you have completed the assignment in the submission, not ours to glean this information from your code. Partial credit is available for a partially complete assignment; just explain the situation in your readme.txt file.

Collaboration policy.  This course permits many forms of collaboration, including help from course staff, classmates, and lab TAs. However, you must be careful to collaborate only as authorized below. Here is an executive summary.

activity your partner course staff COS 226 grads clasmates other
discuss concepts with ...
acknowledge collaboration with ...
expose solutions to ... no no
view solutions from ... no no no no
plagiarize code from ... no no no no no

Your solutions.  You must individually compose all of your solutions. The term solutions refers to any of the products created when completing a programming assignment, such as source code (including comments) and the readme.txt file. It includes both finished and unfinished products, regardless of correctness or completeness.

These rules continue to apply even after the semester is over.

Collaboration with course staff.  You are welcome to discuss your solutions with course staff members (instructor and preceptors) in office hours or via private Piazza posts. Do not post or email us your code; instead, submit it via the course submission system.

Collaboration with classmates.  We encourage you to discuss common concerns with classmates either via personal interactions or the Piazza course forum. These discussions must be kept at a general level, without exposing your solutions. For example, you may ask about:

But, for example, you may not

Collaboration with COS 226 graduates (including lab TAs and peer tutors).  You are permitted to show your solutions to anyone who has successfully completed COS 226 in a previous offering. So, for example, you may receive help from lab TAs in debugging your code. Of course, you must still individually compose your solutions. So, for example, you may not allow another individual to write, type, or dictate code; lead you step-by-step through any part of the assignment; or communicate solutions (including their solutions from a previous offering). Other individuals may help you under these same conditions, provided they are not taking COS 226 now and never will in the future.

Collaboration with a partner.  On those programming assignments designated as partner, the collaboration policy is relaxed to permit working with one classmate. Two students may partner on up to 4 assignments together. If either student wishes to continue partnering after those 4 assignments, they must find a new partner. In such cases, both students must work together (in the same room) and discuss, write, debug, test, analyze, document, and submit all elements of the assignment together. There is one exception—you may discuss your solutions with course staff in office hours, even if one partner is unable to attend. Both partners are responsible for understanding all parts of the submitted assignment and receive the same grade. If two students begin working on an assignment as partners and cannot complete it together, (at least) one student must contact the lead preceptor to request a partnership dissolution.

Collaboration with yourself.  If you took COS 226 (or Algorithms, Part I or II from Coursera) during a previous offering, you may look at your old work but you may not look at the feedback we gave you on your old work. What's more, you may not look at your old work on assignments where: you previously partnered; or you are partnering this time; or you were previously found responsible for plagiarism by the Committee on Discipline. In our experience, students who re-do all of the assignments from scratch are much more likely to succeed in the course, so this is what we strongly recommend.

Collaboration acknowledgement.  You must acknowledge any collaboration (whether authorized or unauthorized) in the readme.txt file for that week's assignment. Using and acknowledging unauthorized collaboration will typically result in a grade of 0 for the assignment (but no further penalty).

Outside sources and citations.  Copying or adapting code that is not yours is permitted only if it comes from the course materials (i.e., the course textbook, companion booksite, programming assignments, checklists, lecture slides, lecture videos, and precept handouts). If you do so, you must cite any code that you copy or adapt. However, you do not need to cite any code included in either the assignment specification or checklist.

Plagiarism.  Programming is a creative work and the academic regulations that apply to plagiarizing prose also apply to plagiarizing code. Rights, Rules, and Responsibilities defines plagiarism as "the use of any outside source without proper acknowledgment." It ranges from "verbatim copying" (e.g., cutting-and-pasting code) to "thorough paraphrasing" (e.g., changing variable names or rearranging code). We use sophisticated tools to detect plagiarism and our teaching staff takes the issue very seriously.

Penalties.  We refer alleged academic violations (including plagiarism and abetting plagiarism) to the Committee on Discipline. If found responsible, the typical penalty is an F as a course grade plus whatever penalty that the CoD imposes. (The typical CoD penalty for plagiarism is suspension from the University for one year.) Violators of course policies that are not adjudicated by the CoD will receive penalties based on the severity of the violation, ranging from a 0 on the assignment to an F in the course.