CSE 373, Autumn 2004: Project
Objectives
The project plays a special role in the course.
It offers each student an opportunity to work on something
unique, typically of personal interest, related to
data structures and algorithms. It's also a chance to
go more deeply into one topic than a regular assignment
affords. It leads to a demonstration and peer evaluation
activity that students in the past have found highly
engaging and worthwhile. The project can also result
in the kind of program that can be used as part of
a portfolio when applying for jobs or to graduate school.
When and How
The project involves a process with several milestones, including
(1) topic proposals, (2) instructor/TA conference,
(3)
progress report,
(4) demonstration and peer evaluation, (5) code submission, and
(6) project writeup. The deadlines for each of these are
given with their descriptions.
Turn in
your reports here.
Topics Proposals
The projects offer a large amount of flexibility in topic
choice. However, there are also some requirements that are in
place for one reason or another, such as "maintaining
a level playing field."
Implementation Requirements
The project must use the Java language and the Visual Applet Framework.
Some projects (such as a search engine) might have multiple parts
Your project must fall into one of the following categories:
(a) using one or more qualifying techniques to implement the solution
to an application problem; (b) studying one qualifying technique
in depth; (c) performing a comparison of two or more
related qualifying techniques.
An example of the first type of project would be using a B-tree to
represent the index created by a search engine, with index creation
(the "crawler") and query processing (the "query engine").
The crawling could be done by a Java application running on the
web server, while the query engine might be an applet that starts
by downloading at least a part of the index and proceeds by showing
the sequence of tests involved in doing a FIND operation in the B-tree.
An example of the second type of problem would start with an implementation
of Huffman coding so that one file could be used to create a code that
would then be used to compress another file. Then a series of experiments
would follow to determine how the compression rate depends upon the relationship
between the files (in terms of frequencies of occurrence of different
characters, etc.).
An example of the third type of project would be an implementation
of growing minimum spanning trees using both Kruskal's and Prim's algorithms,
showing the progress of the two side by side and step by step, and
developing a series of examples that reveal the relative strengths and
weaknesses of the algorithms.
A qualifying technique is a data structure or algorithm that
meets the following criteria: It is covered somewhere in
Chapters 9, 11 or 12 of our textbook. It is NOT splay trees
or AVL trees (too many of these last time around).
You may propose an exception to these criteria, but you should
have a strong reason. For example, if you are doing a comparison
of two dictionary methods, and you want one of them to be B-trees
(which is a qualifying technique) and the other to be hashing
which is not a qualifying technique, you could propose to put extra
emphasis on the qualifying technique. Alternatively, you could
propose an in-depth investigation of an advanced technique such
as LZW coding, which isn't covered at all by our text.
Topic proposals are to be submitted through an
online web form
by 5:00 PM on Friday, November 12.
Instructor/TA Conferences
During the week of November 15, you should meet with either
the instructor or one of the TAs to get your topic proposal
approved. Everyone needs to get formal approval, whether
you are working with obviously qualifying techniques or not.
You and your partner should come in together, if
possible, in case you need to make adjustments to your
proposal at the meeting. You can come in during regular
office hours or during special hours to be announced.
Progress Reports
Each team should submit a progress report using an online
form to be provided.
These are due on November 24.
Demonstrations and Peer Evaluations
Demonstrations of projects will take place on Friday,
December 10 between 11:30 and 2:30, in the Math Sciences
Computer Center classroom, in the Communications Building
room B-027.
In many ways, they will be similar to the demonstrations
and peer evaluations of Assignment 4.
However, the period will be divided into four sessions:
Session A: 11:30-12:10; Session B: 12:20-1:00; Session C: 1:10-1:50;
and Session D: 2:00-2:30.
Session assignments are given
here.
Code Submission
Source code is due Friday, December 10 at 11:59 PM. (changed
from Dec 8).
Final Reports
Project writeups are due Friday, December 10 at 11:59 PM
(changed from Dec. 8).
The details about what to include are given
here.
Turn in
your reports here.