CS 371 Project Ideas
Students often come up with great ideas for neat projects, but sometimes it is hard to think from a blank sheet of paper. So below are some project thoughts and ideas.
Project Constraints
In CS 371 projects must be implemented in Java or C++. By far most teams use Java. Remember, the whole team must agree on the language, so just because you as an individual might prefer C++ and be good at it, the whole team may not be. Because of this language restriction, web applications are typically not permitted (unless you really build it in Java or C++; I did have a team once do a web-based head-to-head Sudoku game, using the server code from the first assignment as a base). Unity and other large game engine projects are also not allowed.
I prefer projects to be built on the standard language libraries, without using 3rd party libraries. If you want to use some 3rd party library, you must get my prior approval.
Virtually all projects do involve building a GUI (graphical user interface). CS 371 is a great place to pick up the basics of using GUI frameworks and designing and building GUI applications. Java projects usually use JavaFX, although Swing is still a valid option. C++ options vary, perhaps Qt or FLTK or others.
Games
Many teams do some form of game, which is fine, and is often fun for the team and a good learning experience. I strongly recommend avoiding any idea of doing a 3D “virtual reality” game. 2D top-down games (e.g., a survival game, or perhaps tower defense) are often quite successful, and side scrollers work well too. Non-real-time (turn based, or other) games can also be done, as well as implementing (or customizing) a known commercial game (I did a Risk game as a student!). With any game, try to make it unique, with your own ideas and twists and capabilities. That’s what can make it fun!
If you want to try doing a multi-player game, I have a simple Java message relayer that you could use for the communication.
Not Games
Each semester a decent number of teams choose to not do a game, but something more serious. There are so many possibilities! Personal budgeting software, team scheduling, daycare enrollment and management, roomate expense sharing, student course selection and degree planning, user story tracking, are some of past ideas I’ve seen, and the list can go on and on. My one big recommendation is: do not expect that you are going to create something that could compete with a commercial product. Keep it small and focused on a main idea. My project hints and tips are focused on non-game projects.