Individual Projects Ideas

For the remainder of the class each student will focus on a project. You are free to select a project from some of the ideas on this page, or, propose you own idea for a project. Proposed project ideas need to be submitted to the instructor and you can only start working on your proposed idea if and only if the instructor has given you permission.

Project Ideas

The project ideas describe a product and some of its features. The specification is intentionally open and underspecified here. The specific features and their behaviour is to be agreed upon with the staff (see Project Process).

  1. Digital Library. Develop a desktop application that will allow a user to manage their digital library. Ideally the digital library should be able to hold
    • music (mp3, wav, or other music formats)
    • movies (avi, mp4 or other video formats)
    • ebooks (pdf, epub or other formats)
    The Digital Library (DL) should, at a minimum, allow for the following features.
    • The ability to add a new item to the list. Adding a new element should allow the user to specify the item's properties. Some of these properties are required, e.g., name others are optional depending on the type of media, e.g., artist, director, actor(s).
    • The ability to load in bulk a set of items whose properties and location on the drive are given in a file, e.g. CSV file, JSON file etc.
    • The ability to group items together into lists, e.g., for music a play list, for books a reading list etc. The user should be able to select the items that are to be members of a list, store the list and be able to recall the list after a restart of the application. The user should be able to specify certain properties for a list, e.g. name. The user should be able to obtain certain properties of the list, e.g., total space occupied by the elements on the list. Some of these properties might depend on the type of digital media in the list, for example for a music play list the total time of music in the play list.
    • The user should be able to load an existing list and alter it by adding/removing items.
    • The user should be able to export a list into a file. Exporting of the list exports the properties of the list and of each element in the list but not the actual media. The user should also be able to take an exported list and import it into the Digital Library.
    • The user should be able to search their Digital Library. The default search feature should search all of the items in a Digital Library. The user should be able to limit a search based on digital media type, lists, or properties, e.g., all media larger than 10Mb, or all music with band "Dead Can Dance".
  2. Wiki Editor. Develop a graphical desktop application that will allow users to write and view a personal wiki. The application should allow for editing wiki pages using wiki markup but also render the contents of the wiki page while editing. Possible features/extensions
    • Search for wiki page titles
    • Search for words in wiki pages
    • Extended editor functionality, search and replace, highlighting of wiki markup terms, indentation and formatter, local word autocompletion, spell checking as you type, etc.
    • Wiki viewer extensions, load non-local wiki pages in OS default browser, viewer history back/forward, connect viewer with editor (visiting a new wiki page in the viewer updated the editor to show that wiki page's wiki markup and vice versa).
  3. Desktop Graphical Game. Develop a desktop graphical game (ideas). Possible features/extensions.
    • The game should allow for player profiles. Profiles should hold information about the player, e.g., a picture, name, email etc.
    • The game should keep high scores that are available on game restart.
    • The game should have sound enabled.
    • The users should be able to see statistics about their game play, e.g. continuous hours played, longest time played without loosing a life, highest number of points in a game session, etc.

Project Process

The process that we will follow for our projects will attempt to simulate a small team where you--the student--are the developer and the class staff will be the customer. Each student must setup a recurring 1-hour meeting with a member of staff. Each meeting will roughly have the following structure

The meeting's structure and times will be modified according to the team's needs. We'll probably spend a little more on planning in the first meeting and probably more on review in the last couple of meetings.

Project Deliverables

Your project submission must contain the following information

  1. README.md file with the following information inside.
    1. Your name and email
    2. A list of all the material that you are submitting, for example, the link to your github repo for your source, the link in your repo for you design document.
    3. Detail instructions on how to check out your source code and build your source code.
    4. Detail instruction on how to run your program.
    5. A paragraph explaining what you set out to built.
    6. A paragraph explaining what you actually develop.
    7. A list of any bugs/limitations that you know are present/valid in your code.
  2. Design Document with the following information
    1. Explain your solution/design. You are encouraged to use class, sequence and/or interaction diagrams in your explanation. The goal of this document is to make clear how you mapped your solution into code. Make sure that you explain how information was mapped to data, any design patterns used in the code as well as any algorithms/flows that are central to the application's features.
  3. Javadocs. Have your code's javadoc checked in to the repo. Also make sure that any code that is in the repo generates correct javadoc without any errors or warnings.
  4. Tests. Your project should have adequate tests for your code. If your projects deals with a UI and you have time to write UI tests great, if you do not have time to write UI tests do not worry about it. All other code that is not UI related should have adequate tests.