Programming with
Data Structures and Algorithms

Honesty Policy

Brown University has an Academic Code that governs all our transactions. This Code includes a section on Respect for the Integrity of the Academic Process, which establishes its policy on cheating. We expect that you, as students and scholars, will abide by this faithfully and fully.

You are forbidden from using Internet resources for assistance other than those specifically linked from the course website or specified in the assignment. The only exception is pure reference material, e.g., the Racket docs. That is, you can look up generic reference material, but may not post questions to mailing lists or perform non-generic searches that might help you find solutions.

Because Brown does not operate on an honor code, we have no choice but to police you, even though this saps valuable time and weakens the spirit. Therefore, we will check for violations of the Code. If we believe you are in violation, we will prosecute as per the department’s and Brown’s regulations. (Be aware that we monitor many of Web resources.) We have successfully prosecuted students in the past, and will not hesitate to do so in the future. We really do have the patience to go through all stages of the review. Don't test us.

Late Handins

As a general rule, we do not accept late handins. Some classes are designed to exploit the fact that you've just finished an assignment and may show you the solution right afterwards. Furthermore, the pace of the course is relentless; if you start to slip, you're unlikely to catch up.

The deadlines are set so that you can finish work in the evening, turn in your material, and still get a good night's sleep so you are awake and alert for class. We will accept a late handin only if you have documentable, extenuating circumstances.

Our times are always in citmt, i.e., CIT Meridian Time.


We don't grade on a curve or line or any other geometric object. Rather, we view grades as a easy-to-scan certificate. That is, we are certifying each student on the quality of work they are capable of doing based on the evidence we have. What that means is that one person's grade is truly independent of everyone else's.

Brown labels the grades as follows: A = Excellent, B = Good, C = Fair. I interpret these the same way, so a good performance will earn you a B. If you want to maintain a straight-A transcript, this is probably a bad course to take.


We periodically assign readings. You are expected to understand everything assigned.

It's very easy to read passively and think you're understanding when you're not. This is dangerous. Therefore, you should try your hand at a few exercises. If you finish the exercises as easily as you thought you would, that means your understanding is just fine; keep going. If you find it takes much longer than expected, maybe you should do a few more. If you can't do them at all, re-read, and then go to hours!


Your assignment contains detailed handin instructions. (If it does not, tell us what's unclear about it.) If you don't follow these instructions to the letter, you may get a zero.

Working Together

The purpose of assignments in this class is to help students learn key ideas in programming with algorithms and data structures. Some (not all) assignments require a certain insight, or at least careful analysis, that is much harder to generate or perform than to merely replicate. We believe that doing it for yourself, though harder, is the only way to truly understand that insight or analysis.

By default, you will do all assignments alone. You may not discuss these assignments with anyone other than the course staff.

Some assignments will be designed as pair work. For those assignments, you can and should would collaboratively with your partner, but you may not communicate in any way about the homeworks with members of other pairs. You may only discuss these assignments within your pair and with the course staff. The assignments page will indicate which ones will be done in pairs, and instructions on forming pairs will be given by staff. CS 17 already provides a fabulous guide to pair programming. The last section (entitled "Pair-Programming in CS 17") does not apply to this course, but you should make sure you read and understand the rest of the document.

The only permissible communication outside the above guidelines is with course staff. If ever in doubt, ask the professor, even if it's after a possible violation. Ignorance is no defense.


You are responsible for keeping your files private by setting the appropriate protections. If you fail and someone copies your work, you too will be held responsible. This is not an obstacle to pair-programming because you are supposed to be doing it together, not separately across a common file-system.