Please read the assignment carefully! Many questions we will receive are likely answered on this page.

In this assignment, you are given two ADT interfaces, and you will implement them according to their specifications.

Starting point

Download and extract these materials. Contained are:

Do not modify anything other than and We will be testing these with unmodified versions of the other files.

Organization is good. Make yourself a folder for this project if you haven’t already.

See the grading rubric further down to see the breakdown of the points.

Set [65 points]

You will implement the Set class. It implements SetInterface. Read the doc comments for each method in SetInterface carefully. In addition to the interface methods, you will also need to make some constructors, as detailed below.

Never write an entire program before testing it. No one writes a correct program in one shot. Save often. Test early and test often. Read the sections of the textbook starting at Chapter 2.16.

Details of your Set implementation

MovieShelf [30 points]

You will implement the MovieShelf class. It implements MovieShelfInterface. Again, read the doc comments in that file carefully.

You are writing code that uses your own code. We call this “eating our own dogfood”. It’s kind of a gross term, but hey.

MovieShelf is a client of your Set. That is, it will have an instance of Set and use it to hold its data. This means you are creating this class via composition.

Details of your MovieShelf implementation


We will be testing your code on the command line. You are welcome to use an IDE, but before submitting, please test that your Java files can be compiled and run on the command line without it.

You are given a simple driver program, but you should write your own driver as well to test your code more thoroughly. The driver provided does not test all the possible corner cases, and does not test Set directly.

Click here for an example of what the driver will output for a correct implementation.


This is not acceptable in this class or in your following classes. Comment out the code that doesn’t compile and put comments at the top of your Java files for the grader. You may receive some partial credit for such code.

Code that crashes may also receive partial credit.

Grading Rubric


For example, I would name mine

You will submit a ZIP file named where username is your Pitt username.

Do not put a folder in the zip file, just the following files:

Do not submit any IDE project files.

Creating a ZIP file

If you’ve never created a ZIP file before, it’s easy to do in modern operating systems.

  1. Select all the files you want to add to the ZIP file (the Java files listed above).
  2. Right click on the files, and…
    • Windows: do Send To > Compressed (zipped) folder. Then you can name it.
    • macOS: do Compress n items. Then you can rename the file.
    • Linux: haha who knows

Submit to the Box folder at this link. Drag your zip file into your browser to upload. If you can see your file, you uploaded it correctly!

You can also re-upload if you made a mistake and need to fix it.