CSE 331 - Data Structures - Fall 2004
Computer Science & Engineering
University of Notre Dame
Open-ended Programming Project - Guidelines & Requirements
This project is quite open. You may choose from almost any type of software application
as long as there are significant data structures and algorithms involved. You may
create your own software or significantly enhance an existing Open Source program.
In either case you must do some research into the literature. Hard copy and web
accessible information is acceptable. At least one reference should be from a
technical publication.
Phase 1: Due Tuesday, September 28, 2004 by MIDNIGHT
Submit Initial Programming Project Proposal:
In a 1/2 page proposal (dsproj.pdf or dsproj.doc) include the following.
- Name of your project
- Names of all group members (preferred group size is 3 members). Groups of
2 or 4 members MUST be approved in advance by the professor.
- A brief description of the program you plan to enhance or create. You
have a choice here.
- You may select some Open Source program (sourceforge.net
is a good place to look around) and enhance it in some significant way. The enhancement MUST in some way improve its performance or add to
its capabilities
through changes you make to its data structures and the functions that manipulate
them. We are looking here for real enhancement, not just taking a
non-GUI application and putting a GUI face on it.
- You may create your own application from scratch. It must be an
application that in some way makes significant use of data structures
and algorithms we have studied this semester. A GUI of some kind is
required on a new application. An Ncurses style interface may be acceptable
if it makes use of special keys, mouse and color.
- Identify the data structures and algorithms that are
key to the modification or creation of the software you are tackling.
- Give some reference(s) and/or source(s) of information relevant to your project. Web
or print sources are acceptable at this stage.
Phase 2: Due Tuesday, October 26, 2004 by MIDNIGHT
Final Programming Project Plan and UML:
This submission will describe in a bit more detail what your project is and
some significant planning details related to the software design and system
requirements. No significant change in topic or application type will be allowed
after this phase has been passed.
If you have decided
to make a change between the first phase and now, approval must be obtained from the
professor.
Submit a one page project plan that identifies the central application for your program
and the key functionality that this application will require. Outline the framework of
your program in a separate UML diagram. Explain the interaction of the modules and the
basic functionality of each (you will develop this into a set of formal ADT APIs which
will be submitted with your final project). Identify the GUI utilities which you will use
and your program’s target platform.
Identify new or standard data structures which you will implement (if you are not
working on an Open Source project you must identify two). Identify how you will test the
efficiency of your selected data structures. If you implement structures already in the
STL you may test them against the standard. For structures used but not implemented
you must compare their efficiency against that of another structure. For example:
MyVector vs stlVector, List vs Tree, Hash vs ....
Phase 3: Final Written Materials due Tuesday, December 7, 2004 - by MIDNIGHT
Project in-class presentations will be on
- Tuesday, November 30th
- Thursday, December 2nd
- Tuesday, December 7th
Selection of presentation slots will be by lottery, and will
be determined after submission of Phase 2 documents. Any group that wishes to
volunteer to go on the first day, may do so.
Each presentation will last a MAXIMUM of 20 minutes (including questions and
any demonstration). You should have the following PowerPoint slides, overhead
transparencies, or similar visual aids, and must discuss each item below
briefly. If you include additional topics, MAKE SURE you have time to cover
them. Remember, each group will have approximately 15 minutes for talk and
software demo, plus a few minute (3-5 max) for any questions.
All class members are expected to attend all presentations.
The in-class presentation must include: UPDATED 11/24/2004
-
A title slide with project name and group member names
-
Motivation and goals of the project
(Single sentence motivation & succinct list of goals)
-
A brief list of program capabilities, target platform and potential users
-
A list of key data structures and algorithms (keep this to the point)
-
Identify any comparisons performed between different
data structures or algorithms and summarize results
-
Conclusions (level of completion, most useful thing learned, etc)
-
A brief demonstration of the program
Keep in mind that each slide (powerpoint or overhead transparency) will take
you anywhere from one to three minutes to present, so keep the number limited
and have each focused. You may have more than one presenter. However, make
an effort to minimize the "tag-team" effect.
The final project submission will include:
-
A short (min 3 page, max 5 page) paper covering the topics listed below. Be concise.
-
A separate UML diagram showing high level overview of program structure
-
You source code
-
An executable program
-
A file containing APIs for each key data structure (class, ADT, ...) you create
-
README files, one for each group member (named README.<your_asfid> - for example README.jstewman). Each
file details your individual activities and contributions. Keep it in the
form of a daily diary, giving date, time worked, activity, etc.)
All submissions must be made digitally in
the course drop box. Please submit the paper, API's and UML diagram in .pdf format.
Make sure to cite all of your References!
The final paper format includes:
-
Title and authors
-
Abstract (scope and motivation)
-
Key terms
-
General description of project, background, motivation and goals. This may repeat some
of the abstract. Should also include references to
sources (personal, literature, on-line) used in development of the software.
-
An explanation of the desired program functionality, platform and potential users
-
A UML based overview of the program framework
-
Description of key data structures and algorithms used, including
reasons for your choices, and descriptions of how each data structure
supports program functionality
-
Hypotheses regarding performance/efficiency of the data structures
-
Rationale for selection of the data structure comparison scenarios
-
Experimental efficiency data based on time, iteration, or space measurements
-
Discussion of experimental results versus original hypotheses
-
Mention of error handling mechanisms implemented
-
Conclusions
-
References
-
Brief biographies of each group member (50 words max). Include a picture
of each person.
General allocation of points will be according to these percentages.
Phase 1 document 5%
Phase 2 document 5%
Presentation 15%
Program Demo 10%
Paper 35%
UML diagram 5%
APIs for data structures, classes, ADTs, etc 10%
Source Code & executable 10%
Individual diaries 5%
BONUS: If (by the Dec 7th submission deadline) you decide to post your
program in an Open Source
development forum, I will award 5% extra to your final project grade. Make
sure your program is ND
quality; you don’t want to publish your name globally with a “sub-par” project.