Computer Science 226
Algorithms and Data Structures
Spring 2013

Course Information | Assignments | Exercises | Lectures | Exams | Precepts | Study Guide | Booksite


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. Do not begin the assignment before reading this entire page which includes assignment policy. Once the assignment moves above the "Assignments below have not yet been updated for Spring 2013" part of the table, no significant changes will be made.

1 Tue 2/12 Percolation checklist submitindividual
2 Tue 2/19 Deques and Randomized Queues checklist submitpartner
3 Tue 2/26 Pattern Recognition checklist submitpartner
4 Tue 3/5 8 Puzzle checklist submitpartner
5 Tue 3/26 Kd-Trees checklist submitpartner
6 Tue 4/9 WordNet checklist submitpartner
7 Tue 4/16 Image Resizing checklist submitpartner
8 Tues 4/23 Baseball Elimination checklist submitpartner
9 Tue 4/30 Burrows-Wheeler checklist submitpartner

Submission policy.  You must submit your solutions electronically via the Dropbox submission system. You will need to type your Princeton netID and password for authentication. Be sure to type your name, login, and precept number at the top of every file you submit. Also be sure to click the Check All Submitted Files button to make sure that you have submitted all of the required files and that they compile cleanly. If you do not follow these directions, you will lose a substantial number of points.

The Check All Submitted Files button now requires that you have a header with the above information. For assignments where a partner is allowed you are required to include your partner information in the header (even if you do not have a partner). Each time you click this button, a counter is incremented. You are allowed to click this button (not including invalid header attempts) up to 10 times. After that it will be disabled until the next assignment. Any problems, contact Maia Ginsburg.

You can resubmit and unsubmit files as needed up until the submission deadline. However, once the submission deadline passes, you should not resubmit or unsubmit files: if you wish to submit an assignment late, be sure that your submission directory is empty from the deadline until you are ready to submit all of your files for that assignment. Any files submitted at grading time will be graded as is.

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–24 hours late (4 points), 24–48 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.

Coursera policy.   You are not permitted to use the Coursera code submission system. Countermeasures (not specified) are in place, and violations will be referred to the Committee on Discipline.

Collaboration policy.   Programming is an individual creative process much like composition. You must reach your own understanding of the problem and discover a path to its solution. During this time, discussions with other people are permitted and encouraged. However, when the time comes to write code that solves the problem, such discussions (except with course staff members) are no longer appropriate: the code must be your own work. If you have a question about how to use some feature of Java, the operating system, or some other relevant application, you can certainly ask your friends or the teaching assistants, but specific questions about code you have written must be treated more carefully. For each assignment, you must specifically describe in your readme.txt file, whatever help (if any) that you received from others and tell us the names of any individuals with whom you collaborated. This includes help from friends, classmates, lab TAs, and course staff members.

Do not, under any circumstances, copy another person's code. Incorporating someone else's code into your program in any form is a violation of academic regulations. This includes adapting solutions or partial solutions to assignments from any offering of this course or any other course. Abetting plagiarism or unauthorized collaboration by "sharing" your code is also prohibited. Sharing code in digital form is an especially egregious violation: do not e-mail your code or make your source files available to anyone. There is one exception to the code-sharing rule: You may adapt code from the COS 126 or COS 226 course materials provided that you explain what code you use, and cite its source in your comments. An example citation appears in

This policy supplements the University's academic regulations, making explicit what constitutes a violation for this course. Princeton Rights, Rules, Responsibilities handbook asserts:

The only adequate defense for a student accused of an academic violation is that the work in question does not, in fact, constitute a violation. Neither the defense that the student was ignorant of the regulations concerning academic violations nor the defense that the student was under pressure at the time the violation was committed is considered an adequate defense.
If you have any questions about these matters, please consult a course staff member. Violators will be referred to the Committee on Discipline for review; if found guilty, you will receive an F as a course grade plus whatever disciplinary action the Committee imposes.

Partner programming assignments. On programming assignments designated as partner, the collaboration policy is relaxed to permit working with one partner. 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. For partnering, both students work together (in the same room) and discuss, write, debug, test, analyze, document, and submit all elements of the assignment. In this case, only one partner (with the other partner present) submits the code and readme.txt; the other partner submits only an abbrievated readme.txt that contains both partners' names, logins, and precepts. The names, logins, and precept numbers of both partners should appear at the top of every submitted file. Both partners are responsible for understanding all parts of the submitted assignment and receive the same grade.

If you have any questions about these matters, please consult a course staff member. Violators will be referred to the Committee on Discipline for review; if found guilty, both partners will receive an F as a course grade plus whatever disciplinary action the Committee imposes.

If two students begin working on an assignment as partners and cannot complete it together, either student can contact the lead preceptor to request a partnership dissolution.

Computing laboratory.   The Friend 017 computing laboratory is open 24 hours a day. It contains iMacs which can run either OS X or Windows; alternatively, you can bring your own laptop. Most evenings, the lab is staffed with undergraduate lab TAs, who can answer general computer-related questions and assist in debugging. If you have specialized questions regarding the course materials or programming assignments, see your preceptor or instructor.

Important note.   Please do not publish solutions to programming assignments in a way that could compromise their utility as pedagogical tools. At Princeton, this is a violation of the basic rights, rules and responsibilities of members of the university community.