CS Department   Mt. Holyoke College
CS 341
Software Design

Project

Goals

The purpose of the project in 341 is to gain experience in a number of different areas:

Project ideas

For the 341 project, you will need to find an existing system that you can extend. There are many projects to choose from in the open source community. www.sourceforge.net is an excellent place to look. The ideal project should have good documentation, and either be a non-trivial component or set of classes that you can use within an application, or itself be an application that you can extend with interesting behavior. You should pick a project in a domain that you are reasonably familiar with so that the existing system is easier to understand.

Here are some ideas:

There are literally thousands of projects at SourceForge to choose from - games, desktop applications, web applications, etc. Projects are written in a variety of programming languages, so you can choose what language to use (but be warned that I will be much less helpful in languages other than Java!).

Milestones

Oct. 18

Meet to discuss preliminary project to extend

Need approval to proceed

Oct. 25

Project goals - description of design of the existing system

10%

Nov. 1

Detailed design of your extensions and implementation schedule

15%

Nov. 13

Phase 1 code

20%

Nov. 15

In-class design presentations

10%

Nov. 20

Phase 2 code

15%

Dec. 4

Final code

15%

Dec. 11

Project demo

15%

Details

You may choose to work in groups of two or three or individually.

On October 18, I would like to meet with each of you to hear what project you would like to extend. At that time, you do not need to have completely decided what your project will be, but you should have one or more ideas about what system you want to work with and you need to convince me that it will be a good project.

On October 25, you should submit a document describing the portions of the design of the existing system that affect your extensions. You need a clear understanding of this before you can proceed with extending the design. The documentation should be more than just javadoc documentation, although that may form a part of what you submit. In addition, there should be a textual description of the design and UML diagrams that can help clarify the relationships between the various classes in the system that you will extend. At this point, you should be getting an initial understanding of what your design will look like.

On November 1, you should submit a clear description of your extensions as well as a design of your extensions. As in the previous assignment, this should include a textual description, user interface drawings (if appropriate), UML diagrams, and javadoc documentation as appropriate to help clarify your design. In addition, when you submit the design, you should also submit a schedule for when coding of different pieces of the design will be completed. You should notice that there are 3 due dates for the code. It will be up to you to decide what is due when. (Making it all due on the last day isn't an option!)

On November 15 we will have in-class presentations of your designs. The purpose of these discussions is to help clarify, understand, and possibly improve the design. It will be important for you to understand each other's designs, because it may be necessary for you to develop code based on somebody else's design. So it is important for you to communicate your designs well and to understand what each other is doing.