This 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. These topics are fundamental to programming and are essential to other courses in computer science. There will be weekly assignments and assignments in discussion sections consisting of programming and written exercises. There will also be several exams. Prerequisites: COMPSCI 121 (or equivalent Java experience). Basic Math Skills (R1). Advising information about the prerequisite: for Fall 2016, students with grades of B-, C+, or C in 121 are strongly encouraged to take 190D, Using Data Structures, in preparation for COMPSCI 187. Beginning with the Spring 2017 offering, the prerequisite for 187 will change to a grade of B or better in 121 (or C or better in 190D). 4 credits.

Staff and Office Hours

Weekly Calendar


Course Schedule

You should consult the UMass academic calendar to make sure you are aware of important dates and events. The following are the weekly topics that will be covered during this course. Be aware that the schedule is subject to change during the semester at the instructor’s discretion.

Midterm and Exam Schedule:

Lecture Schedule

Class Day Topic
1 Tuesday, Sep 6 Introductory Material
2 Thursday, Sep 8 Java Types and Classes
3 Tuesday, Sep 13 Java Interfaces; ArrayStringLog
4 Thursday, Sep 15 Linked Lists; LinkedStringLog with Linked Lists
5 Tuesday, Sep 20 Algorithm Analysis
6 Thursday, Sep 22 Stacks; Generics; Exceptions
7 Tuesday, Sep 27 Iterator, Iterable, Array-based Stacks
8 Thursday, Sep 29 Linked Stacks; Postfix Expression
9 Tuesday, Oct 4 Midterm #1
10 Thursday, Oct 6 Recursion 1
11 Thursday, Oct 13 Recursion 2
12 Tuesday, Oct 18 The Queue ADT; Linked Queue
13 Thursday, Oct 20 Queues: Array Implementation
14 Tuesday, Oct 25 List ADT; Array-Based Lists
15 Thursday, Oct 27 Link-based Lists
16 Tuesday, Nov 1 Binary Search; Binary Tree
17 Thursday, Nov 3 Binary Search Trees
18 Tuesday, Nov 8 Balancing BSTs
19 Thursday, Nov 10 Midterm #2
20 Tuesday, Nov 15 Heaps; Priority Queues
21 Thursday, Nov 17 Graphs
22 Tuesday, Nov 29 Graph Searches
23 Thursday, Dec 1 Sorting
24 Tuesday, Dec 6 More Sorting
25 Thursday, Dec 8 Hashing
26 Tuesday, Dec 13 More Hashing; Final Review

Project Schedule

Each project is due on a Friday at 4pm (see schedule below), and submitted to Gradescope.

Due Date Project
Sep 9 hamspam (instructions, starter code)
Sep 16 hangman-array (instructions, starter code)
Sep 23 hangman-list (instructions, starter code)
Sep 30 sets (instructions, starter code)
Oct 14 postfix (instructions, starter code)
Oct 21 hanoi (instructions, starter code)
Oct 28 queues (instructions, starter code)
Nov 4 recursive-list
Nov 18 bst-scapegoat
Dec 2 heap-queues
Dec 9 search
Dec 14 (Wed!) sorting-kata

Discussion Schedule

See Spire for your discussion section.

Time LGRT 223 LGRT 225
10:10AM-11AM Boya David
11:15AM-12:05PM Boya Venky
12:20PM-1:10PM Boya Venky
1:25PM-2:15PM David Venky
2:30PM-3:20PM David Venky

Course Materials

Yes, the clicker is absolutely required for the fall. It is required on the first day of class.

There is no required text book for the course. If you like having a text, some suggestions are:

Course Assessment

You will be graded on your ability to program and your understanding of data structures.

You are responsible monitoring your grades. Grades will be available through moodle and you should check them regularly and review any provided feedback. If you encounter any issues with your grades, you will have 1 week past the return of your grades to contact the course staff so we can investigate. We will not accept questions about individual assignments grades beyond one week, so you must be prompt.

Assessment and Grading

Each assessment component is worth a fixed number of points. At any point during the course you can easily calculate your current grade by the number of points you have achieved with respect to the total number of points you can attain in the course. You should read the course policies to understand lateness.

There is no opportunity for extra credit in this course. Please do not ask!

Course Management

This course will use a number of web-based services. We will create accounts for you, but it is your responsibility to log in and check that everything has been set up correctly.


Piazza is a online discussion management system. It will be used as the main hub for communication in this course. All questions and answers will be posted to Piazza. You will be responsible for visiting Piazza several times a day to see updates, or setting your email preferences accordingly. Please review the Piazza feature list to get an understanding of how to use Piazza.

Piazza is a great tool but it can be abused. Please follow these guidelines in your use of Piazza:

The course staff (instructors and TAs) will monitor Piazza and answer your questions in a timely manner. If a question has already been answered in a previous post we may not respond to you. If a question does not follow the guidelines above we may not answer it. If we find that a private question is relevant to a larger audience, we may make it anonymous and post it publicly to help others in the course.


Our use of Moodle will be limited to making course grades available to you. (The course syllabus, materials, and assignments will all be available of this website.)

You should have had an account automatically created for you at the beginning of the course. If you are unable to log in to moodle you should contact the instructor. If you haven’t used moodle before it is your responsibility to become acquainted with its interface and main features.

Grades will be available through the moodle gradebook. You should orient yourself with how to find it and stay on top of your grades to avoid any grading issues.


We will be using the Eclipse Development Environment for completing programming assignments. You are required to use Eclipse for programming. All programming assignments are distributed as Eclipse projects and you will need to become acquainted with how to import and export projects. This will be covered during the first week of class.

The projects are compatible with Eclipse “Neon”. Other versions of Eclipse may or may not work correctly.

Java 8

We will be using the Java Development Kit version 8 in this course.


We will use a tool called Gradescope for grading your programming assignments, midterms and exams, and discussion section assignments. Gradescope allows us to provide fast and accurate feedback on your work. You should have an account within a few days of signing up for the course. Gradescope will email you with your account details. If you do not, please contact the instructors immediately.

The autograder will provide you with some limited feedback on programming assignments: does it compile, does it pass the public and private tests, what your score is, etc. It will not tell you which private tests it has run, nor should it. It is your responsibility to thoroughly test your own programs!

We will grade your midterms and exams through gradescope as well. This allows us to parallelize the grading of your assignments and to use a standard rubric for programming questions. This also frees us all from handing back hundreds of exams in class!

Turning in discussion section assignments: TBD.

Late Submissions

Late submissions for any assessment component will not be accepted, with the one exception noted below. It is your responsibility for maintaining your own schedule and being prompt with your submissions. We expect that you become familiar with the course submission software and verify that your submission has been properly uploaded. We will not accept late submissions due to lack of checking on this. We assume:

To ensure that you submit assignments on time you should begin them early and not wait until the last minute to submit. You will be able to submit multiple times so submit early and often to ensure you have something submitted.

We will drop your worst assignment grade to deal with extreme circumstances that are truly beyond your control have prevented you from submitting on time. This includes death, extreme illness (not a cold, cough, or flu), etc. If this is a continuing matter that requires more than one assignment to be late we will recommend that you withdraw from the course.

Academic Dishonesty

It is very important in all courses that you be honest in all the work that you complete. In this course you must complete all assignments, exams, etc. on your own unless otherwise specified. If you do not you are doing a disservice to yourself, the instructors for the course, the College of Information and Computer Sciences, the University of Massachusetts, and your future. We design our courses to provide you the necessary understanding and skill that will make you an excellent computer scientist. Assignments and exams are designed to test your knowledge and understanding of the material. Plagiarism and academic dishonesty of any kind may seem like an easy way to solve an immediate problem, however, it can have a substantial negative impact on your career as a computer science student. There are many computing jobs out there and many more people working hard to get those positions. If you do not know your stuff you will have a very difficult time finding a job. Please take this seriously.

Specifics for this course:

  1. Assignments in this course are individual, not group, and direct collaboration is inappropriate. Any group work we will clearly explain as such.

  2. While we support learning from your peers, the rule of thumb is that any learning should be in your head. Therefore you should not leave an encounter with another student (in person or electronic) with anything written down (or electronically recorded) that you did not have before. Thus, giving or receiving electronic files is specifically considered cheating.

  3. Use of materials from previous offerings of this course, no matter the source, and even if you are re-taking the course, is prohibited.

  4. We will employ various means, electronic and otherwise, to check for compliance with these course policies. We will pursue sanctions vigorously and the usual sanction we will pursue is an immediate F in the course.

Unfortunately, in past semesters 10-15% of 187 students ignored this advice and were failed. This consumed huge amounts of instructor time. So instead of checking assignments we have decided to leave this up to the students to do the right thing. Typically grades on assignments are extremely high so the difference in letter grades is primarily determined by performance on exams. And students that do not complete the assignments do not do well on the exams.

Resources available to you:

  1. The instructor and teaching assistant(s) are eager to help you learn and to work through any difficulty. Please contact your instructor if you are struggling to complete assignments. We strive for ready accessibility by email and online discussion forums, and will make a strong effort to meet you in person.

  2. The Learning Resource Center on the 10th floor of the main library offers support for this course with trained tutors for free, available on a wide schedule. They can be reached at and 1-413-545-5334.

Other Academic Regulations

The Office of the Registrar publishes Academic Regulations yearly. You should be familiar with them. Particularly relevant are the policies on attendance, absences due to religious observance, and examinations.