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, stacks, queues, binary trees, balanced trees, graphs, hash tables, sorting, and algorithm analysis. These topics are fundamental to programming and are essential to other courses in computer science.
Prerequisites: COMPSCI 121 (or equivalent Java experience); basic math skills (R1). The prerequisites are: grade of B or better in 121; or a grade of C or better in CMPSCI 186. 4 credits.
If you have not received Piazza or Gradescope invitation yet, don’t worry – the department is still making changes to the roster and you may still be on the waitlist. We will make sure that everyone enrolled in the class on SPIRE will receive Piazza and Gradescope invitation before the first lecture. If you need to attend the first lecture but are not enrolled in the class on SPIRE yet, you can contact the instructor (below) to obtain the zoom link.
This semester there will be two sections and they are taught separately. This is the homepage for Section 2 of CMPSCI 187. If you are enrolled in Section 1, please go to CMPSCI 187 Section 1 homepage.
Course schedule is published in Piazza. In addition, please consult the UMass academic calendar to make sure you are aware of important dates and events.
Each programming project is due at 11:00pm on a Friday. Project instructions, starter code, and the specific due date of each project are posted in Piazza; and your submission must be uploaded to Gradescope.
Section 2 labs are all scheduled on Wednesdays. The TAs will offer labs live (via Zoom) but they will NOT be recorded. Each lab exercise is due by 11:00pm on the day of the lab (Wednesday). See SPIRE for your enrolled lab section time. Lab materials and instructions are all published in Piazza.
Exams will all be done online. Details will be posted soon.
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.
There is no required text book for the course. If you like having a text, below are some recommendations:
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 Gradescope 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.
Each assessment component is worth a certain percentage of the final grade, as described below. Final grades will be curved before converting to letter grades. Before final exam is graded, it’s unlikely we can tell exactly what your letter grade will be, but for each exam, we provide feedback to you as ‘what your letter grade would be if it was based on that exam alone’, to give you a sense of your performance relative to the rest of the class. The late policy is explained later on this page.
There is no opportunity for extra credit in this course. Please do not ask!
This course will use a number of web-based services. We will create accounts for you before the first lecture starts, 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 posting course materials, projects, labs, and managing 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:
You should use Piazza to ask technical questions and get advice on projects. But you may not post project code or solutions to Piazza, either in questions or answers to others’ questions.
If your post must contain code, you should make it a private post in Piazza, which is only visible to the instructors and TAs.
Your question may already have been asked by someone. Before posting, make use of the search feature to see if your questions has already been answered. You should only post after thinking through the problem and clearly articulating your question.
You are encouraged to help other students with answering questions.
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.
In Fall 2020, we will use Moodle for managing online exams, and posting final grades. Please note that course materials are NOT distributed in Moodle but are distributed in Piazza.
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 imported to Moodle at the end of the semester. During the semester all project and lab grades will be available in Gradescope.
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.
We will use Gradescope for grading your programming projects, lab exercises, and exams. Gradescope allows us to provide fast and accurate feedback on your work. You should have an account prior to the first lecture if you have enrolled in the class on SPIRE by then. Gradescope will email you with your account details. Because enrollment keeps changing during the first week of class, and we manually upload roster to Gradescope, please be patient: if you have recently enrolled in the class, please do not contact the instructor immediately for Gradescope account, instead, wait a day or two – the roster will be uploaded and your account will be created.
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. Instead, you should carefully reason about your programs, think about where problems may occur, and fix them before submitting to Gradescope.
Lab section exercises are also submitted to and graded in Gradescope.
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.
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, labs, 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:
All submissions in this course are individual. Discussing the projects and how to solve the problems with your peers, TAs, UCAs, or SI is allowed, however, you must write every line of program code on your own and implement solutions on your own. Copying from other students, or resources you find on the Internet, either digitally or manually, is strictly prohibited. Similarly, sending your submission to other students, or making your submission publicly available online, is strictly prohibited.
We use automated software tool in conjunction with manual verification to detect plagiarism. If you are found cheating, we will pursue sanctions and the usual sanction we will pursue is an immediate F in the course. The bottomline is, again, do NOT copy from other students or resources, instead, each line of code must be written by you and you alone. The software tool is very good at detecting attempts to cover up cheating, such as copying someone’s code and changing variable names. If you truly wrote down each line of code on your own, the likelihood of being falsely flagged by the software tool is practically zero.
Use of materials from previous offerings of this course, no matter the source, and even if you are re-taking the course, is prohibited.
If you plan to use version control software, such as Github, to manage your projects, you must make your repositories private and not publicly available.
Resources available to you:
The instructor, TAs, and UCAs are eager to help you learn and to work through any difficulty. Please contact your instructor or TAs if you are struggling to complete projects. We strive for ready accessibility by online discussion forums and email, and will make a strong effort to meet your need.
The Learning Resource Center offers support (such as Supplemental Instructor or SI) for this course with trained tutors for free. Please take a look at the LRC webpage for details.
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.