CMPSCI 187: Programming with Data Structures

Marc Liberatore and John Ridgway
Spring 2015 (archived)


Welcome: In this course, each voice in the classroom has something of value to contribute. Please take care to respect the different experiences, beliefs and values expressed by students and staff involved in this course. We support UMass’s commitment to diversity, and welcome individuals of all ages, backgrounds, citizenships, disability, sex, education, ethnicities, family statuses, genders, gender identities, geographical locations, languages, military experience, political views, races, religions, sexual orientations, socioeconomic statuses, and work experiences.

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

This course satisfies the R2 general education requirement. Read more about the learning goals of this course and how it meets the criteria for this requirement.

Prerequisites: CMPSCI 121 with a C or better (you should be familiar with a Java IDE such as jGRASP, and the topics covered in 121, including data types, expressions, objects, methods, top-down program design, program testing and debugging, state representation, interactive programs, data abstraction, conditionals, iteration, interfaces, inheritance, arrays, graphics, and GUIs). New Java language concepts are introduced quickly in this course; if unsure of background, contact the instructors. A Basic Math Skills (R1) course is also required. There is no other specific mathematics prerequisite but readiness for MATH 131 (Calculus I for Scientists and Engineers) is recommended.

This course uses the Moodle course management system, and many elements of course content are available there, to registered students only. The course Moodle page will be available shortly before the start of term.

John Ridgway
Office: CS 318
Office Hours: Tuesday 2:30–4:00, Wednesday 9:30–11:00, and by appointment.

Marc Liberatore
Phone: 413-545-3061 (on campus: 5-3061)
Office: CS 356A (inside 356)
Office Hours: Monday and Wednesday 4:00–5:00, and by appointment.

Teaching assistants
(all TA office hours are in the EdLab, LGRT 223)

Kristina Fedorenko
Office Hours: Wednesday 1:30–3:30

Gene Levitzky
Office Hours: Wednesday 4:00–6:00

Abhyuday Narayan Jagannatha
Office Hours: Wednesday 11:00–1:00

Keen Sung
Office Hours: Tuesday 1:00–3:00

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

Lecture sections: There are two sections of this course. Section 01 meets Tuesday and Thursday, 10:00-11:15 a.m. in Morrill 1, room N375. Section 02 meets Tuesday and Thursday 8:30–9:45 a.m. in the same room.

Discussion sections: There is one discussion meeting per week, meeting on Mondays. There are currently twelve separate discussion sections, each to be led by one of the TAs, two each meeting at 9:05–9:55 a.m., 10:10–11:00 a.m., 11:15 a.m.–12:05 p.m., 12:20–1:10 p.m., 1:25–2:15 p.m., and 2:30–3:20 p.m. You must attend the discussion section you are assigned to, unless you make special arrangements beforehand. These discussion sections will meet in the CMPSCI education lab (the EdLab) in rooms 223 and 225 of the Lederle Tower (LGRT) — room 225 is accessible only through room 223. The first discussion meeting will be on Monday January 26. Check SPIRE to see which discussion section you are in.

Discussions will have a short written assignment which you will carry out in pairs. You choose your own partner at the start of each discussion, with the requirement that you may not have the same partner twice in the term. Some assignments will involve use of the computers that are in the lab, with each pair using a single machine. Discussion attendance is required.

Course materials:

  • Required materials:
    • Object-Oriented Data Structures Using Java, 3rd edition, by Dale, Joyce, and Weems (Jones & Bartlett, ISBN 978-1-4496-1354-9), also known as “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 we will also make any slides we use in the lectures available on this site.
    • an iClicker2, available at the Textbook Annex. UMass IT does not support the iClicker+ device or the iClicker Go software. IT provides directions to register your iClicker2 in Moodle, and you are reponsible for doing so in each class that uses it (including this one).
  • Other useful materials: DJW is not a Java language manual. There are a variety of ways to get information about the Java language and standard library. Three that have been recommended in the past:
    • The API specification for the language (version 7)
    • Java Precisely by Peter Sestoft (MIT Press, ISBN 9780262693257). 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. 
    • Learning Java, 4th edition, by Patrick Niemeyer and Daniel Leuck (O'Reilly). A learn-by-example book about Java. You can read it online for free, or buy the e-book.