CPSC 124, Spring 2006
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 few weeks, you should meet with me to explore ideas for a project. The sooner you can get started, the better.
The project is due on the last day of classes, Tuesday, May 2. We will not have a regular lab on that day, but we will meet at the usual lab time so that I can collect the final projects and each student can present his or her project to the class. If your program isn't quite complete by May 2, 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 somewhat 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, including, most importantly, arrays (Chapter 8) and more details on components and layouts (Chapter 7). Other topics that might be encountered in lab include displaying images such as pictures of playing cards (Lab 11?), simple network communication (Lab 12?), and reading from and writing to files (Lab 13?). 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!
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. The point is not so much to write a big, complex program as to write a program that is well-designed and runs well. Here are some ideas for projects, but you are not restricted to choosing from this list:
- An arcade-style game, along the lines of the Tron lab or 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.
- Write a more realistic program for administering quizzes, with a greater variety of problems, the ability to save the user's results to a file, and/or other features.
- 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 (using the GraphicalCard class that you will encounter in Lab 11), 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.)
- Write a networked application based on the SimpleNetwork class, which we will likely use in Lab 12. It could, for example, be a networked game or a drawing program that two people can work on simultaneously over the net.
- 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.
- You could even write a much more ambitious version of one of the RandomArt programs, perhaps with animation.
David Eck, March 2006