There are 6 exercises and 6 projects in all. These are due at midnight (11:59 PM to be precise) on the dates indicated on the Calendar page.


1 Programming Model (writeup | zip)
2 Data Abstraction (writeup | zip)
3 Comparable Data Types (writeup | zip)
4 Sorting (writeup | zip)
5 Symbol Tables (writeup | zip)
6 Graphs (writeup | zip)


1 Percolation (writeup | zip)
2 Deques and Randomized Queues (writeup | zip)
3 Autocomplete (writeup | zip)
4 8 Puzzle (writeup | zip)
5 KdTrees (writeup | zip)
6 WordNet (writeup | zip)

The writeup file contains the problem descriptions. The zip file contains the starter files for the problems, any data files, and notes.txt file for projects.

Grading Scheme

Correctness and Style

Your solution to each exercise/project problem will be evaluated by an autograder for correctness and style. Each test that is used to evaluate the correctness of your solution is worth some number of points; your solution will receive all the points from a test that passes and 0 points from a test that does not pass. Your solution will receive 2 points if there are no style errors, and 0 points otherwise. Your overall correctness and style score will be normalized to 100 points for an exercise and 80 points for a project.

Clarity and Efficiency

Your solution to each project problem will additionally be checked by a TA for clarity and efficiency. Your code will receive 10 points if it meets our expectations (must include adequate comments, must follow good programming principles, and must meet any problem-specific requirements such as corner cases and running times), and marked down otherwise.

Notes File

For a project, the given notes.txt file must be uploaded with the three sections (#1 mandatory, #2 if applicable, and #3 optional) filled in as appropriate. Your notes file will receive 10 points if it meets our expectations (section #1 must provide a clear high-level description of the project in no more than 200 words), and marked down otherwise.

Submitting Your Work

You will use Gradescope to submit your Java programs (ie, .java files). Make sure that you only submit files listed under the Files to Submit section of the assignment writeup.

You may submit your files as many times as you like, up until the assignment deadline. The most recent submission is considered active by default and your score on the active submission is your official score for the assignment as well. You have the option of making any of your previous submissions active.

Note: If your active submission is partial, your assignment score will also be partial, so in order to be eligible for full credit, make sure you have an active submission containing all the required files for the assignment.

Late Days

Assignment deadlines are firm and non negotiable. However, you have up to 5 (10 if you have accommodations through the Ross Center) late days that you may use to submit one or more assignments a bit late. You may use them all for a single assignment or spread them across the assignments as you find necessary. If you need to use any of your available late days for a particular assignment, you must send me a request via email at least 48 hours prior to the assignment deadline, or else your request will not be granted.