CSE 326 Data Structures
Project IV
A New Hope

Code Due: Tuesday, March 7, 2000
Demos over March 7-10, 2000

Overall Project Description

Objectives

Assignment

For this assignment, you should select one of the options described at the end of this document. You can see more details on the individual assignments there. For grading, you will (among other things) demo your project to us in Sieg (more on the demos later in this document).

We recommend developing using C++ and working on the Linux machines simply because we know you are all capable of using both. However, you are free to develop your project using any language you wish on any platform you wish as long as you can demo the program. You'll have any publicly accessible machine in Sieg available for the demos including UNIX boxes, NT boxes, and even the Macs in the TA offices, but it's your responsibility to ensure that the demo will work! Also, all of your team members should be able to answer questions about the code and project; so, make sure they're up to speed on the platform and language.

Late Days

You may not use late days to extend the deadline for this project. Tuesday evening is as late as we can make the code submission deadline. However, we will use remaining late days to resolve scheduling conflicts (more late days means priority in scheduling).

Teams

You are required to work on a team of four to six on this assignment. If you have not found a team by Tuesday 2/22, e-mail owner-cse326@cs.washington.edu, and we'll help you match up with a group. No matter what, you are required to send one e-mail message from your whole team to us by Thursday, 2/24 telling us your team name and group members.

You may choose how to divide the work under two conditions: first, document each team member's effort in the README file, and second, understand at least at a high level how your team members' portions of the project work and how they are structured. Any of you may be asked high level questions in the demo or during the final about your project. Remember to test your team's code as a whole to make sure that your portions work properly together! Also, be aware that except in extreme cases when you notify us in advance of the deadline, all team members will receive the same grade for the project.

We will consider group size somewhat in the grading process. So, it is reasonable to work as a team of only four if you wish.

What we've provided

We are providing only references for this assignment. However, we encourage you to help each other. Please make sure your team's code is its own, but feel free to share references, ideas, pseudo-code, or even small code snippets among teams. This project is not curved; so, helping other teams cannot hurt your team and may well help it.

I want to see plenty of project #4 traffic on the mailing list! I get so lonely in this little office. ;)

Input files

Again, we are not providing input files or test cases, but we strongly encourage you to share your test files; particularly those groups doing the maze generation and maze visualization projects!

You could even construct standards to help you share. For example, if several groups want to have a Poisson-disk distribution standard format, they can test each others Voronoi diagramming programs against each other! Please include all the groups working on your project in this kind of effort, however.

Handing in the code

You are required to hand in all of your project4 code. Included in this should be a README. Make sure you describe any commonly available libraries you used in your README! This is due by the due date (Tuesday, March 7th at 10PM).

Turn your files in electronically using turnin:

% cd ~/326stuff/myproj4dir
% make full_clean
% cd ../
% turnin -c cse326=AA -p p4 myproj4dir

We're aware that this code may not compile on the Linux instructional machines, but we want to see it nonetheless, and the README file is vital to your submission and grade.

The README

Please note that the README and other documentation is even more important on this project than it usually is! Construct a complete and clear README. Moreover, don't feel limited by what we list here. Make your documentation complete even (especially) if it means going beyond what we mention here.

This is not something to leave to the last minute. It would even be reasonable to have one team member responsible for just documentation (and it will not be an easy task)!

Finally, you may, if you like, construct a Web site to document your project and have your README file contain just the first two items listed below (names, option) plus the URL of that page.

Your README file should document your submission (though it does not by any means replace comments in the code!). It should contain the following:

Also answer the following question:

Project Demos

Every group will be required to demonstrate their project to the 326 staff in a 30 minute demo session. As many of your group members as possible should attend this session. Those who do not attend should be aware that their grade will largely depend on the demo nonetheless. You are required to submit your available times by Friday, February 25th!. We will hand out a schedule of times, but all demos will occur in the week of Monday, March 6th.

The demo session will involve a discussion of the project and code including some question and answer, a demonstration of your program (possibly on inputs provided by us), and consumption of home-baked tasty items (provided by the staff). We reserve the right to add more serious or silly content to these demos without notice. Be prepared!

The fundamental principles we grade you on will be: what have you accomplished (how much and how well?), what have you learned, and how well do you understand your creation?

Additional utilities

We have not provided any extra utilities, but you are free to make use of data structures from the Standard Template Library (STL), the Library of Efficient Data Types and Algorithms (LEDA), or any other data structures library, book, code base, paper, or blessed rustproof +2 magic helmet for this assignment. The rest of your project (other than the data structures) should be your own work. Moreover, you are responsible for understanding all the code you use.

We are also available to help you or point you to references; so, make use of our office hours, the owner-cse326@cs mailing address (that's all of us), and the cse326 mailing list.

Extras (bonus)

Extra credit on this assignment will be difficult and will be based on exceeding our expectations. Where possible, we have defined what this means. However, a project that doesn't work or is fragile or ill-written will not exceed our expectations no matter what amazing things it sometimes does or was designed to do!!!

I cannot stress robustness enough! Do not even think about pondering exceeding expectations until you are confident you have met them! I still haven't stressed this enough! Do I need to resort to a blink tag just to stress robustness? Would I so hideously pervert HTML for a lesser cause? MAKE YOUR PROGRAM ROBUST!! Just do it!

Project Options

  • Compression
  • Maze construction
  • Maze visualization
  • Adventures in data structures