Course Project Hints and Tips
Below are some hints and tips to help you focus on creating a great course project!
Databases
Many applications need to store and retrieve data that persists in between executions. A natural choice is some full-featured database, such as MySQL, MariaDB, or MongoDB. I recommend not using a full featured database, unless your team already has pretty good expertise in using it.
Your project does not need to support 100GB of data or 10,000 simultaneous users, so you can simplify your data storage choice in order to make more progress on your project’s functionality. Feel free to use something as simple as CSV files that you read into your app in their entirety, and write back out in their entirety. It is highly doubtful that the test data you create during the course project will be too big to fit into memory.
CSV stands for comma-separated-value, and this is an easy way to store a “table” of data similar to an SQL database table. You can have a unique CSV file for each data table you might have in a real database. You’ll have to read them in into in-memory data structures, but you can use Java Collections for these.
CRUD Operations
Along with database choice, I have seen teams think that they must get all of their data operations (CRUD == create, read, update, and delete) working before they can start on their application functionality. If you keep it simple (such as reading in all data at startup and writing out all data at shutdown), you can get going on application functionality much faster because all you need to do is access in-app data. Don’t get stuck doing CRUD!.
Also, if you do pick a simple text-based method of storing data, such as CSV files, then it is easy to create test data right away, because you can do it with a simple text editor, or even with a spreadsheet program (these can write out CSV files).
User Login/Identification/Security
Some projects have a notion of different users and different user types that have access to different parts of the system. I have seen teams waste too much time implementing user and password login screens before getting to their application functionality. Your course project does not need world-class security! Just make a simple way for a user to enter their userid and then get right into building your application functionality. If you want to add a password capability near the end of the project, that’s fine, but don’t hold up the beginning of the project with it.