Project: Phase 1

The goal of this phase include

1. Teams

For reference, here are the teams for phase 1:

2. Main functionality

Write a Java program for managing and displaying a timeline. The main menu will allow the user to

When the user makes a new timeline project, he or she will choose a name which will be the basis for a filename. The information for that timeline will be stored in that file.

A timeline will consist in a collection of events (or "entities" or "entries", or whatever you want to call them). There will be two main kinds of events: events that have a duration (beginning date and end date), and atomic events that have only a single date.

The user can create in a timeline project a collection of categories. Each event will be associated with a category. (In a really simple project, there could be just one category that all events are in.) In later phases these "categories" will serve as the basis for the various registers and color-coding and things like that we saw in various timeline examples.

As the user makes new categories and events (and deletes events), the file for the timeline project will be continuously updated

When the user indicates to render the timeline, it will be shown using basic Java graphics. The user can scroll left and right to proceed and regress in time.

In this phase, all events will be in real, historic time. We won't worry about fictional or other time until later phases.

3. Technical requirements

Use GitHub for your repository. When I evaluate projects, I will grab the latest version from GitHub.

Use JUnit for unit testing of your code. This should be included in the repository and will be part of your evaluation.

Your code should be thoroughly documented (Javadoc-style comments on all class members, etc). Your code should conform to Java coding convensions (find them here). .

You should anticipate that this project will involve some research and self-directed learning. You'll need to learn just enough git/GitHub, Java graphics, JUnit, etc. You'll also need to look into the best way to store the timeline information in a file; you may want to look into learning just enough XML or how to use SQLlight.

When the project is due, your repository should contain a document describing what you learned in this phase: things like what decisions you made about the design, what worked and what didn't, what parts of the system you wrote JUnit tests for, what tools you used besides those required here, etc. In essence, it should contain everything you think I need to know to evaluate your submission fairly.

DUE: Midnight between Friday, Feb 14, and Saturday, Feb 15.


Thomas VanDrunen
Last modified: Sun, Jan 26 10:42 CST 2014