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.