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
- Develop a substantial and interesting application
- Understand how data structures work in the context of a larger
program
- Experiment with new and interesting data structures
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:
- Your names and e-mail addresses and your team name
- Which option you chose
- A high level description of your strategy and choices in tackling
this option
- Approximately how long the project took you to complete
- A breakdown of the work by team member
- Acknowledgement of any assistance you received from anyone but
your team members, the 326 staff, or the Weiss book
- A list of the files in your submission with a brief description of each file
Also answer the following question:
- What did you enjoy about this assignment? What did you hate?
Could we have done anything better? What's the coolest thing about
your project?
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
? Would I so hideously pervert HTML for a
lesser cause? MAKE YOUR PROGRAM ROBUST!! Just do it!
Project Options