CPSC 124, Fall 2005
Final Programming Project
One of the requirements in CS 124 is a final programming project, which will count for 10% of the course grade. There is no assigned topic for the final project -- you should select a programming problem on your own. Sometime during the next two weeks (before Thanksgiving), you should meet with me to explore ideas for a project. Some possible ideas are given below, but you are not restricted to choosing from the list given here. The sooner you can get started, the better.
The project is due on the last day of class, December 9. At that time, I would like you to present your program to the rest of the class. If your program isn't quite complete by December 9, I will consider giving you an extension of a few days to finish it up. However, no extension will be given if you haven't already done a substantial amount of work.
For this final project, you can choose to work with a partner. If you do this, your project must be more ambitious than a one-person project.
Remember that you should not give help to or receive help from any other member of the class (except for your partner, if you have one). You can get help from me or from the computer science TA's, but not from anyone else. You should not copy code from the Internet or from any other source, unless you get my permission to use that code as a basis for further development.
Your final project can, of course, use any of the techniques that we have covered in class. We will be doing a few more things over the next few weeks that might be useful: using components, such as buttons and text-input boxes; simple network communication; reading from and writing to files; displaying images; more about using menus; and using arrays to store a numbered list of values. If it turns out that there are other things that you need for your project, I might be able to help you with them on an individual basis. In fact, if you don't need any help on your project, then it is not ambitious enough!
One approach to the project would be to write an improved version of one of the programs you have already worked on. For example:
- Write a greatly improved version of the Mosaic Draw program from Assignment 2. You could add additional tools such as ovals and lines. You could make it possible to save to a file, so that you can reload the picture later to continue working on it. There are lots of other possibilities. If you are very ambitious, you could implement cut-and-paste of regions of the picture.
- Write a networked application based on the SimpleNetwork class from Lab 10. It could, for example, be a networked game or a drawing program that two people can work on simultaneously over the net.
- Write a more realisting program for administering math quizzes, with a greater variety of problems, the ability to save the user's results to a file, and other features.
- You could even write a much more ambitious version of the RandomArt program from Lab 5, perhaps with animation.
Of course, you could also do something entirely different. Although you will probably want to write a GUI program, a command-line program is also acceptable. You should try to design a program that will be useful, interesting, or fun. Write a program that you would like to use yourself. Here are a few more ideas, but remember that you are not restricted to choosing from the lists given here:
- An arcade-style game, along the lines of the SubKiller applet from Section 6.5, but with more action. Something like Tetris or Space Invaders would be challenging, but not impossible. Or you could design your own game.
- A two-person arcade game. Typically, one person uses the arrow keys while another uses the W, A, S, and D keys. You could, for example, try to do a version of "Tron".
- A strategy game such as MineSweeper.
- A Casino-style game such as Roulette or Craps, where the user can place bets. Or a video poker slot machine, or some other type of slot machine.
- A Hi-Q solitaire game. (The wooden version has a bunch of pegs in holes, with one hole left empty to start with. The user removes pegs by jumping over them.)
- A solitaire card game.
- A four-function integer calculator. While this is not exactly original, it is an interesting program to write. It really forces you to think in terms of the state of the program.
- A miniature spreadsheet, where the user can enter some numbers and have some useful calculations done on them.
- An applet or program that you think you might actually find useful in some other courses, especially if you can get the idea from one of your other professors.
David Eck, 5 November 2005