CMPSCI 187: Programming With Data Structures
James Allan
Fall 2013

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.

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.

This course satisfies the "Gen Ed" requirement as described in this General Education Statement.

For Fall 2013, CMPSCI 187 is using the University Moodle system. Most of the information on this page is repeated in the class' Moodle site. Your UMass userid and password will be required for access. Guest access is possible; the password will be announced in class.

Registering for Fall 2013?

If you are unable to register because you are not a declared Computer Science major, you may request an override using the on-line form found on the registration advising page (it also includes information about what happens). You will receive an acknowledgement message that indicates when you will be notified of a decision. Override processing is handled by the School and not by the professor, so contacting the professor will not increase your chances of getting the override.


This class improves programming skill in Java and covers the following data structures and topics in approximately this order. Some of the later topics may be dropped or skimmed over because of time constraints. Some additional related topics may be added depending on the needs of the class.

Meeting times

The course will meet for two lectures a week: Tuesday and Thursday afternoons, 2:30-3:45pm, in Morrill Science Center II, room 131. That building is located at the lower right corner of C3 on this map.)

You will also attend one discussion section per week, meeting on Monday. There are 8 separate discussion sections (two in each of four times; there are effectively four sections), each led by the TAs. They meet Mondays from 10:10-11:00, 11:15-12:05, 1:25-2:15, or 2:30-3:20. Please choose a discussion section you can attend (and check SPIRE to ensure that is what you got). Because of space constraints you must 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. 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 different offerings of the discussion sections be as interchangeable as we can make them.


The textbook is 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 work as substitutes. Lectures will follow the content of the book fairly closely (especially after the first few weeks), though some topics are re-ordered.

The DJW book is not a Java language manual. There are a variety of ways to get information about the Java language -- two useful ones 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.

Assignments and exams

Your grade in this class will be based upon the following:

Collaboration and help

You may discuss the ideas behind assignments with others. You may ask for help understanding class and Java concepts. You may study with friends. However...

The Java code that you submit must be your own. It may not be copied from the web, from another student in the class, or from anyone else. If you use a solution from the textbook or from class, you are expected to acknowledge the source of your code in a comment (for example, "// The following way of solving this problem is on page 215 of the textbook").

Your effort on exams must be your own.

Your homework submissions must be your own work and not in collaboration with anyone.

Your discussion section work will usually be done in pairs, with the pairings changing each week.