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, graphs, and hash tables. These topics are fundamental to programming and are essential to other courses in computer science. There will be weekly projects, iClicker questions in class, and assignments in lab sections consisting of programming and written exercises. There will also be several exams.

Prerequisites: COMPSCI 121 (or equivalent Java experience); basic math skills (R1). The prerequisites for 187 require a grade of B or better in 121; or a grade of C or better in 186. 4 credits.


Instructors and TAs Office Hours

Project Intro Workshop

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.

Lecture Schedule

The topic of each lecture is listed below. Lecture slides are all posted in Piazza. Below we also include lab and project schedules – labs are listed with the Tuesday lectures, and projects are listed with Thursday lectures. But keep in mind that labs all happen on Mondays, and projects are all due on Fridays. There is no project due in a week when there is a midterm or final, or during Thanksgiving recess.

No. Date Topic Lab (Mondays / Wednesdays) Project (Fridays only)  
1 Tue, Jan 21 Introduction No Lab    
2 Thur, Jan 23 Java Review 1   Project 01  
3 Tue, Jan 28 ArrayStringLog Lab 1    
4 Thur, Jan 30 Linked List   Project 02  
5 Tue, Feb 04 Java Review 2 Lab 2    
6 Thur, Feb 06 Stack 1   Project 03  
7 Tue, Feb 11 Stack 2 Lab 3    
Thur, Feb 13 Unit Exam 1      
Tue, Feb 18 Monday Schedule Lab 4    
8 Thur, Feb 20 Big-O   Project 04  
9 Tue, Feb 25 Hashing Lab 5    
10 Thur, Feb 27 Recursion 1   Project 05  
11 Tue, Mar 03 Recursion 2 Lab 6    
12 Thur, Mar 05 Queue 1   Project 06  
13 Tue, Mar 10 Queue 2 Lab 7    
14 Thur, Mar 12 List 1   Project 07  
15 Tue, Mar 24 List 2 Lab 8    
16 Thur, Mar 26 Binary Srch/Tree      
17 Tue, Mar 31 BST Lab 9    
18 Thur, Apr 02 Balancing BSTs   Project 08  
19 Tue, Apr 07 Heap Lab 10    
20 Thur, Apr 09 Graph   Project 09  
21 Tue, Apr 14 Graph Search Lab 11    
Thur, Apr 16 Unit Exam 2      
22 Tue, Apr 21 Sorting No lab    
23 Thur, Apr 23 More Sorting   Project 10  
24 Tue, Apr 28 Final Review Lab 12    

Project Schedule

Each programming project is due on a Friday at 3:59pm. Project instructions and starter code are posted in Piazza; and your submission must be uploaded to Gradescope. There are 11 projects in total. The specific due date for each project is included in the table above (note that each project is listed with a Thursday lecture but it’s due on the Friday of that week).

Lab Schedule

All labs are scheduled on Mondays. See SPIRE for your enrolled lab section time. Below is a list of the lab section TAs. The specific date for each lab is included in the table above (note that each lab is listed with a Tuesday lecture but it happens on the Monday of that week).

Time LGRT 223 LGRT 225
Mon 9:05AM-9:55AM Rumeng Alex
Mon 10:10AM-11AM Rumeng Alex
Mon 11:15AM-12:05PM Jagath Aowal
Mon 12:20PM-1:10PM Joshua Aowal
Mon 1:25PM-2:15PM Joshua Aowal
Mon 2:30PM-3:20PM Rumeng Luke & Kobi
Wed 9:05AM-9:55AM Rumeng Alex
Wed 10:10AM-11AM Rumeng Alex
Wed 11:15AM-12:05PM Joshua Alex
Wed 12:20PM-1:10PM Joshua Aowal
Wed 1:25PM-2:15PM Joshua Aowal

Exam Schedule:

Note: make-up exam or taking the exam with disability services must be requested and approved one week before the exam. We cannot accommodate your requests if they are received less than a week before the exam. If you fall ill on the day of the exam (but before the exam starts) and have to request a make-up exam, you must provide an official doctor’s note so that we can contact the doctor for verification. We cannot accommodate any make-up request after the exam.

Course Materials

Clicker is absolutely required for this course. It is required from the first day of class.

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

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 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 course management system. It will be used as the main hub for communication in this course. All questions and answers should also be posted in Piazza. You will be responsible for visiting Piazza frequently to see updates, or subscribe to email notifications. Please check Piazza features to get an understanding of how to use it.

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 right away (hence it’s important to learn to use the ‘search’ feature).

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.


We will only use Moodle for returning grades and feedback to you. The course materials (e.g. syllabus, schedule, lecture slides, projects) will be available on this webpage and Piazza, and will not appear in Moodle.

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. 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 resolve any grading issues in a timely manner.


We will be using the Eclipse Development Environment for completing programming projects. You are required to use Eclipse for programming. Specifically, all programming projects 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 Photon. Other versions of Eclipse may or may not work correctly.


We will use Gradescope for grading your programming projects, unit exams, midterm, final exam, and lab 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.

Projects are graded automatically using Gradescope autograder. Before the deadline you can submit as many times as you need. The autograder will provide you with some limited feedback on your submissions: 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 and debug your programs before submission. Purely relying on Gradescope feedback is not an efficient way to solve problems.

Unit exams, midterm and final exam papers are also graded in Gradescope, but they are scanned, digitized and manually graded by instructors and TAs. This allows us to parallelize the grading tasks and use a standard rubric for grading fairness. This also frees us all from handing back hundreds of exam papers in class!

Lab section assignments are also submitted to and graded in Gradescope.

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 projects 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 in before the deadline.

We will drop your lowest project grade to cope with extreme circumstances that are truly beyond your control that have prevented you from submitting on time. If this is a continuing matter that requires more than one project 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 projects, 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. Projects 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. Projects in this course are individual, or pair-programming. Discussing the projects with your peers is allowed, but you must write every line of code on your own and implement solutions on your own. Copying from other students, either digitally or manually, is strictly prohibited.

  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. If you plan to use version control software, such as Github, to manage your projects, you must make your repositories are private and not publicly available.

  5. 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.

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 projects. 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.