The main goal of the final project (which counts for 2/3's of the course grade) is to put together all the bits and pieces that you've learned about programming during the quarter: object-oriented programming concepts, well commented readable code, good data structure definitions, understandable algorithms, reasonable error checking on user-provided input, etc.Over the many years that this course has been taught, we've seen great (and fun) final projects. Examples include:
The point of listing these examples is to show the variety of ideas students have come up with. Some programs have been used to further a research project a student was involved with, some were demonstrations of concepts that the student was interested in, and some have been computer games that were just plain fun to write.
- A program to catalog and search a personal wine collection
- A program to analyze the fragment weights from a mass spectrometry experiment
- A program to calculate fluid and electrolyte deficit and estimate creatinine clearance in order to access patient renal function
- A program to compute the target genotypes of Drosophila parents given the desired genotype of progeny
- A program to calculate electrostatic energy based on a molecule's coordinates and partial charges
- A program that plays blackjack with the user
- A program that maintains a database of clinic patients, allowing the user to add, modify, and delete individual patient records
- A program to determine the dosing regimen for several different drugs given half-life, therapeutic index, and other patient parameters
- A program that demonstrates community birth, aging, and death based on a cellular automata algorithm
The requirements listed here are intentionally few and fairly general so as to maximize the flexibility you have. All have been discussed in class and most have been the topic of homework problems.
- Your program must accept command line arguments specified by the user such as file name(s) and/or program option flags. As an optional alternative, your program can use a graphical user interface (GUI) instead.
- Your program must both read input and write output to at least one file. One of these ``files'' can be either standard input (sys.stdin) or standard output (sys.stdout), but the other must be a disk file.
- You must use multiple program modules and at least one Python class.
- Your program must do some non-trivial data processing. Copying an input file to an output file is not sufficient. Examples of non-trivial processing might include: sorting data based on a particular field in the input file, rotating and translating atom coordinates, adding/deleting/retrieving entries in a database, data acquisition from a remote scientific instrument, or plotting experimental data on the computer screen.
- Your program modules must have sufficient comments embedded in the source code so that someone reading the program can tell what is going on. Complex algorithms must be thoroughly documented.
Obviously you need to supply the source code so that we can test your program. You may also supply instructions on how to run your program if it's not totally obvious how to do so, or if you don't provide a ``help'' feature. If your program uses an input data file or user-provided keyboard input you'll need to supply that too. Lastly, if it not completely obvious if your program is generating correct output, you'll need to supply sample output so that we can determine if the program works as advertised.