Homework 7: Choose Your Own Homework



1. Introduction

Your task for this homework is to design and implement an assignment of your choosing. It is a two week assignment, and it is expected that the median student will spend 10-15 hours on it. You can build whatever you would like, but there are some guidelines you should follow to ensure your assignment helps you demonstrate correct usage of data structures. This document will provide those guidelines.

2. Guidelines

Here are the minimum guidelines to consider when designing your homework:

  1. This is a data structures course, therefore your assignment must demonstrate your ability to properly use at least two different data structures. (You don’t need to implement them yourself, however. You can use data structures from the Java API such as ArrayList, LinkedList, etc.)
  2. One of the data structures you use must be either a set (which is like a Python set) or a map (which is like a Python dictionary).
  3. Whatever type of data you are storing in data structures, you should manage at least 500 of them.
  4. Your program must be interactive. That means it has a menu of some sort that a user can interact with. You can build a basic text-based menu or if you want.

3. Minimum Viable Assignment

When designing your assignment, it is important to think through what we called the Minimum Viable Assignment (MVA). An MVA meets the basic requirements specified above and functions completely correctly. If your assignment is completed to the level of MVA, then it will receive a score of 80. If you want a score higher than 80, you will need to include extra features that go above and beyond the minimum. However, extra features do not help you if your assignment does not function properly and hence does not reach MVA. (So, build an MVA first, then add your extra features.)

Examples of ways to go above and beyond:

Roughly speaking, a each good “above and beyond” increases your maximum score by anywhere from 5-15 points, depending on the difficulty as judged by your instructor.

4. Proposal Submission

For this assignment, you are required to submit a proposal with your idea. You proposal needs to include the following:

When writing your proposal, think of sections 1-3 as describing your MVA. Section 4 discusses extensions to your MVA in order to get more points. Remember: You assignment must be completely functional without any of the features from section 4.

You will submit your proposal and your instructor will give you feedback in 24-48 hours.

Your proposal must be a PDF file (other formats are not acceptable) and must be submitted on Autolab before Tuesday, November 27 @ 8:00pm. Late days may not be used for the proposal submission.

5. Grading and Submission

The assignment will be graded as follows:

(Yes, this project is out of 115 points.)

5.1. Submission Documentation

Your final submission needs to include a brief document containing the following:

  1. Your name and andrew ID.
  2. The number hours you spent on the assignment. (This is used for planning future iterations of the course, it is not considering when grading. So please be honest.)
  3. The name of the file containing the main() function that should be run in order to start the assignment. (Or other instructions for running your assignment if required.)
  4. A brief discussion of what works and what doesn’t in your final assignment. This includes a list of which of your above and beyond functionalities you included.

This should all be included in a text file inside your submission. (It must be a text file. I will not accept Word files, PDFs, etc.) The easiest way to handle this is to create a text file in Eclipse and save it to the Eclipse project for your assignment. Then it will automatically be included when you export the zip file.

Name this file README.txt

5.2. Style

In this homework you will be strictly graded according to the style guide. A style checker has been incorporated with Autolab and will assign these style points automatically. You can see your style score and feedback as part of the Autolab output.

5.3. How to Submit

You will submit your program to Autolab. Login to the system and you will see the homework.

You’ll need to submit a zip file containing your code and documentation. Lucky for you, however, Eclipse can create this zip file for you. Check out these instructions. On Autolab, you’ll submit that exported zip file. The autograder for this assignment will only be checking style.

6. Important Notes

7. Sample Project

Here is a proposal for a sample project. This is here for example purposes.

Section 1
In this assignment I will build a simple music manager. It reads in information about songs from a text file and then allows the user to search them, modify them, make playlists, etc. Songs have the following information:

Section 2
I’ll use two data structures:

Section 3
I’ll provide a text-based, interactive menu system that allows the following functionality:

Section 4
Here are extensions I’m considering for more points:

  1. A feature to import songs based on the meta-data stored in an actual music files. I’ll use the library found at http://www.jthink.net/jaudiotagger/ to do it. (10 points)
  2. Add a feature to retrieve song lyrics over the internet from http://www.mldb.org. (10 points)
  3. Make the interface graphical using Swing instead of text-based. (10 points)