Welcome to the Cmp Sci 187 Home Page

News and announcements:

The fourth assignment is due Friday 3/10 at 5:00pm.

Grades are available for all previous assignments.

Programming with Data Structures: Course overview

Description (as in department web site, do see also below!): The course introduces and develops methods for designing and implementing abstract data types, using the Java programming language. The main focus is on how to build and encapsulate data objects and their associated operations. Specific topics include linked structures, recursive structures and algorithms, binary trees, balanced trees, and hash tables. There will be weekly assignments, consisting of programming and written exercises, a midterm, and a final exam. Prerequisites: CMPSCI 121 (or equivalent-not necessarily in Java) and Basic Math Skills (R1). Basic Java language concepts are introduced quickly. Prior experience with an object-oriented language is very helpful; if unsure of background, contact binstructor. 187 Lect B, Computer Science Tap only. 4 credits.

Note: CMPSCI 123 is better preparation than CMPSCI 121, and Java experience is best, C++ second best. Experience with an Integrated Development Environment (IDE) such as Eclipse is also helpful, but we do introduce that. We use Java 5.0 (as in JDK 1.5), not the older Java 1.4 and earlier. We do teach the new features of Java 5.0 that we use.

General approach:

  • Emphasize principles of designing and implementing abstract data types
  • Introduce a variety of standard data structures (linked lists, trees, hash tables) and their use in organizing and accessing data efficiently
  • Use a number of practical programming exercises to reinforce principles
  • Exploit relevant features of latest version of Java (5.0)


  • Lectures present and illustrate principles and examples
  • Discussion sections offer additional exercises, practice, and discussion
  • Assignments / programming projects almost weekly offer hands-on experience
  • Mid-term (evening exam) and final examination consolidate learning
  • Many materials, assignment turn-in, etc., will be via WebCT


  • Read relevant portions of the text in advance
  • Attend lectures and discussions
  • Turn in assignments on time, or make advance arrangements
  • Ask questions, seek help as you need it!
  • All graded work is your own (see Honesty Policy section below!)
  • Take mid-term and final examinations
  • Watch course email, etc., for announcements


  • Cmp Sci 121H (or Cmp Sci 123) with a grade of C or better
  • Because of variations in recent offerings, we are screening students to determine their best course to take next after 121.
  • Strong Java programming skills at the 121 level. We offer only a quick review of Java in 187 (but cover thoroughly the features new to Java 5.0 that we use.)



Location and Time

Lecture: ELAB 303 Mon / Wed / Fri 10:10am - 11:00am
Discussion: ELAB 303 Mon 11:15am - 12:05pm

Schedule Numbers

Lecture A:
Lecture B:
Discussion A:
Discussion B:

Lecture/Discussion A is for general registration.
Lecture/Discussion B is for TAP program students.


Our text is Objects, Abstraction, Data Structures, and Design using Java (Version 5.0) by Koffmann and Wolfgang, published by Wiley (2005, ISBN 0-471-69264-6). It is available through the Jeffrey Amherst College Store (perhaps also the Textbook Annex). Their address is 26 South Prospect, behind the Jeffery Amherst Bookshop at 55 South Pleasant Street in downtown Amherst. Their phone number is 2537816.


Includes key to related sections of the text, related assignments, and an outline (mostly drawn from the text).


Grading Policy

The homework/programming assignments will count approximately 2/3 of your final grade. Thus, since there are about 10 assignments, each one counts about 6 points toward a 100 point total. The mid-term and final exam together will count about 1/2, with the final weighted slightly more than the mid-term (but not much). The exact weights depend on things we cannot know in advance, such as whether there is an unintended difficulty with an assignment or exam problem. Likewise, the translation from raw score (0-100) to letter grade cannot be entirely fixed in advance, but will be approximately: A = 90-100, B = 80-90, etc. But we take into consideration the apparent overall difficulty and performance of the class as whole, without imposing any quota on the number of As, Bs, etc., awarded.

Honesty Policy

Consistent with University codes of conduct, we expect all graded work to be that of the student. Sanctions for turning work not your own, or for offering or receiving improper assistance, may include receiving an F in the course and referral to the appropriate honesty board. Don't do it!

We encourage students to study together and to offer appropriate assistance. A rule of thumb is that you should not leave a meeting or dicussion with anything written down that you did not have coming in to the meeting. Thus any learning is in your head, and any writing (etc.) that you turn in comes from your own understanding.

Any questions? Ask!!

Late Work Policy

We are likely to penalize work turned in late. Also, beyond a certain point, e.g., after we make a solution available, we may not accept late work at all. Remember, blowing off an assignment can really impact your final grade! It's better to turn in partial work than nothing at all!

Computer Science Educational Laboratory Information