The Essentials

Course Details:CS 201 (Data Structures), Spring 2014, Carleton College.
Meetings:4a (MW 12:30pm–1:50pm, F 1:10pm–2:10pm) in CMC 206.
Instructor:Jadrian Miles; CMC 320, x5173, jadrian
Office Hours:M 8:15am–9:15am; W 2pm–3pm; Th 10am–12pm; F 12pm–1pm
Prefect:Daniel Alabi, alabid
Grader:Leah Cole, colel
Textbook:Data Structures and Abstractions with Java by Frank M. Carrano (3rd ed., 2012)
Style Guide:
HW Hand-in:

Course Goals & Content

This course is about organizing data in canonical ways so that both client code (the part of the program using the data) and provider code (the part that organizes the data) can work predictably and efficiently. We’ll learn:

We are going to cover pretty much the entire book, but taking the chapters entirely out of order. In broad strokes, we'll cover:

I prepared a diagram showing all the ADTs and data structures we will cover; amazingly, you'll understand this diagram by the end of the term!

Course Requirements

Who (and How) to Ask for Help

If you need help with an assignment, you can consult with other students, consult the book, search online, talk to the prefect, ask a lab assistant, post to Piazza, or come to me. We'll talk some in class about good strategies for searching for answers online, and how best to ask people for help.

If you'd like help from me, please come see me! I am unlikely to answer detailed questions about bugs via email, as it's much easier and more fun for me to do so in person. My office hours are posted at the top of the page; please either stop by then or email me several hours in advance to arrange to meet. I am rarely available on Tuesdays and weekends, as I reserve those for research and other work. I try to respond to email promptly, but I can't promise any faster turnaround than the afternoon of our next class meeting after you email me.

In this class, as with all classes at Carleton, there are a number of college-wide resources that can be of help: the library, the Write Place, the department's online resources. Feel free to talk to the lab assistants in the CS labs on the 3rd floor of the CMC in the evenings; they are often CS majors and may be able to help. The Math Skills Center may be able to help you with some aspects of the course. Finally, the college has a tutoring program available too.


Your grade will be computed as follows:

Component% of Overall Grade
Final Exam21%

There will be four quizzes throughout the course, and your lowest quiz score will automatically be dropped. Quizzes will focus on recent topics, but may ask about any topics up to that point in the course.

Using the above weights, a total of 90% and up will earn you some level of A, 80% and up at least some level of B, 70% and up at least some level of C, 60% and up at least some level of D.

Homework will be submitted via Moodle. Assignments turned in early will be rewarded; those turned in late will be penalized. Here's the breakdown:

Hours earlyBonus (percentage points)
Hours latePenalty (percentage points)

To be clear, assignments turned in more than 24 hours late will be marked as zeros.

You will have the opportunity to resubmit up to two assignments throughout the term, after you get feedback on them. There will be a separate due date for resubmission. Your resubmitted work will be graded, and the final grade for the assignment will be the average of the grades on the original submission and the resubmission.

In addition, several homework assignments in the second half of the course are designated on the schedule (with an asterisk after their ID) as “leave-one-out” assignments. Out of this set of assignments, you may skip exactly one during the term.

This scheme is designed to eliminate the distinction between “legitimate” and “illegitimate” late or missing submissions. Unless something truly extraordinary happens, there will be no extensions given. If you turn something in late, no explanation is necessary or desired.

Working Together

Learning and coding are both collaborative arts, and you are encouraged to work together with your classmates.

For some programming assignments, you will be assigned a partner to work with. You and your partner should engage in the pair programming model: Both of you should be sitting at a single machine, side by side. One student should be “driving” (that is, using the keyboard and mouse) and the other should be following along, providing ideas, looking for bugs. Make sure that each partner gets a relatively equal chance to drive.

There will also be individual assignments that you will complete on your own. You are permitted to collaborate with others in the class for ideas and to help solve problems, but the solution should be your own.

Collaboration and Plagiarism

There are two kinds of working together: Collaboration and Plagiarism. The former is encouraged; the latter is forbidden. But when you're starting out, it can be hard to tell the difference between them. The two essential distinctions have to do with transformation and attribution — the artifact (writing or code) that you submit must be entirely your own work (every last word of it), and if any ideas embodied in your work were provided or inspired by someone or something other than yourself, you must cite this source.

Plagiarism is the process of (intentionally or unintentionally) presenting the work of someone else in such a way that a reader might assume it was your own. Here are some examples — note that this list is non-exhaustive:

We'll talk about these in more detail during class, but if you have any uncertainty about a particular instance of working together, make sure to check with me first.

Academic Honesty Policy

I am obligated by Carleton policy to report to the Dean of Students any suspected plagiarism or violations of the College's academic integrity policy. The Dean, in turn, brings it to the Academic Standing Committee. The academic penalty for a finding of responsibility can range from a grade of zero in the specific assignment to an F for the course. Please familiarize yourself, if you haven't already, with the Dean of the College's detailed guide to academic integrity.

* With few exceptions, “in advance” means “before the beginning of the term”. I am willing to be flexible about attendance in truly exceptional cases involving serious illnesses, serious injuries, or other unforeseeable, truly disruptive circumstances. Job interviews, extended vacations, political protests, etc. don't count, even as much as I support all those things.