CMPSCI 187: Programming With Data Structures

David Mix Barrington

Fall, 2012

This is the home page for CMPSCI 187. CMPSCI 187 is the second course in programming for undergraduate computer science majors and deals with the design, use, and analysis of important data structures, implemented in Java.

Instructor Contact Info: David Mix Barrington, 210 CMPSCI building, 545-4329, office hours for Fall 2012 Monday 2:30-3:30, Tuesday 4-5, Thursday 2:30-3:30, all in my office. I generally answer my email fairly reliably.

TA Contact Info:

If you have a question that either I or any of the TA's might answer, send it to and we will all see it.

Jackie Feild,, office hours Tuesday 1-2 in LGRT 223; Ravali Pochampally,, office hours Thursday 6-7 in LGRT 223; Jen Steshenko,, office hours Friday 2:30-3:30 in LGRT 223; and Hannah Blau,, office hours Wednesday 6-7 in LGRT 223.

The course is primarily intended for undergraduates in computer science and related majors such as mathematics or computer engineering. CMPSCI 121 (an introduction to Java programming) is a prerequisite. There is no formal mathematics prequisite but readiness for MATH 131 (Calculus I for scientists and engineers) is recommended.

The course meets for three lecture meetings a week, Monday, Wednesday, and Friday, at 1:25-2:15, in Morrill I room N375. (This room is at the northeast corner of the Morrill complex, accessible from Stockbridge Road.)

There is one discussion meeting per week, meeting on Wednesdays before lecture. There are four separate discussion sections, each to be led by one of the TA's, meeting 9:05-9:55, 10:10-11:00, 11:15-12:05, and 12:20-1:10. Check SPIRE to see which discussion you are in -- with rare exceptions, I want you to go to the one you are assigned. These discussion sections will meet in the CMPSCI computer lab in rooms 223 and 225 of the Lederle Tower (LGRT) -- room 225 is accessible only through room 223. Note that discussion sections did not meet on the first Wednesday of the semester, 5 September. Most discussions will have a written assignment which you will carry out in pairs, chosen by you at the start of each discussion with the requirement that you may not have the same partner twice in the term. Most assignments will involve use of the computers that are in the lab, with each pair using a single machine. Discussion attendance is required, so that missing a discussion will incur a grade penalty. It is intended that the four discussion sections be as interchangeable as we can make them.

The textbook is a new one for this term, the third edition of Object-Oriented Data Structures Using Java by Dale, Joyce and Weems (Jones & Bartlett, ISBN 978-1-4496-1354-9), henceforth called "DJW" The first and second editions of the book are substantially different and will not do. Lectures will follow the book fairly closely (especially after the first few weeks) but I will also make slides from the lectures available on this site.

The DJW book is not a Java language manual. There are a variety of ways to get information about the Java language -- two I like are the official API's for the language and the very inexpensive book Java Precisely by Peter Sestoft. Java Precisely is intended more as a reference for people who already know the language, but it has both all the details you aren't likely to ever memorize and a very clear definition of exactly what the language is and what it does.

Announcements (21 December 2012):

Last modified 1 January 2013.