Introduction to Java
CS9053
Java Final Project
Proposals Due: April 1st, 2024 (flexible)
File Project Due: May 10th, 2024
NOTE: YOU CANNOT IMPLEMENT THE SNAKE GAME OR YAHTZEE. MINE SWEEPER MAY BE ALLOWED WITH SIGNIFICANT VARIATIONS
CANNOT BE A SIMPLE THREE-TIER CRUD (Create Read Update Delete) SYSTEM
Java Final Project
Welcome to the Java Final Project.
This will be a final project of your own design. Conceptually, you’ve learned all about Java syntax, data types and structures, and how inheritance and interfaces work. In this part of the course, you’re learning about GUIs, Threads, Networking, and Databases. There are other aspects of Java, like the REST API Servers for Java, and the Spring Framework which allow you to develop other powerful applications.
The deadline for the proposal is in April 1st and due on May 10thgiving you almost 6 weeks to complete it. But the intelligent thing to do is put together your proposal thoughts sooner rather than later so you have as much time as possible to dedicate to the final project. Also you will have assignments due, but you’ll still have plenty of time to concentrate entirely on the final project.
Requirements
The requirement of the final project is that you incorporate at least 3 “advanced concepts”, either from the lectures or from reading on your own, and apply them to your project. For example, an early project was to create a
This implementation had a UI, network communication between a client and a server, a server that was multi-threaded to receive and handle multiple connections at once, and a DB where results could be stored and retrieved. You need to do more than that, such as accounting for multi-user concurrency and transactional atomicity.
A few points:
Any UI development should be in Java. People have made previous requests about building a web-based UI in React and making a Java-based back end. With rare exceptions, I will not be allowing this anymore. I want you to concentrate on your Java skills so you can only use a Java-based UI. You are free to use any UI framework you want, but it has to be in Java.
You can use the Spring Framework, but it has to complement Java code, not replace it. Spring Boot is great for dependency injection and creating objects and handling settings. However, your database queries and network connections should ultimately be written in Java. I don’t want to put any kind of code-minimum on these projects, but if your project has 10 lines of Java code interfacing with a bunch of SpringBootconfiguration files, you’re doing it wrong.
Group Size: You may do this in a group of 2-3 people, but the more people, the larger the project needs to be. The following project examples are suitable for a single person. Group projects will have to double or triple the amount of work, and we will evaluate this based on what you put in your proposal (see below).
Other example projects:
Yahtzee (NOT ALLOWED TO BE SUBMITTED BUT YOU CAN LOOK AT THIS TO GET AN IDEA)
Graphics-based games: The Snake Game (NOT ACTUALLY ALLOWED BUT YOU MIGHT WANT TO LOOK AT THIS)
This is a graphics and animation-oriented game that has to take inputs from a keyboard or mouse to move a “snake” that eats apples or eggs and lengthens with each item it eats. The goal is for the snake to avoid eating itself even as it gets longer and longer. For more info and examples, see
Online Scheduling/Reservation System
Here you have a database that stores calendars and appointments, and the user accesses this scheduling data by connecting to a remote server. You should be able to make an appointment and reserve a time slot. If the time slot is reserved by someone else, it will be unavailable.
Data Visualization/Analysis
Download sample log data (such as someplace like
Multithreaded Web Crawler
This would require you to learn a bit about Java’s URL and HTTP classes (see
Guide to finding ideas:
If you have research work you’re already working on, use Java to create an interface to it or solve other problems.
Browse the web for other projects or sources of data.
Leverage your research interests and see how you can use java to present them in a compelling way. See how you can take repetitious code and parallelize it using Java threads.
What you need to do:
First, come up with a proposal and give it to us. This should outline what you plan to do, what Java features it will use, and what your design will be. This is to make sure you’re doing good work and to give you a chance to talk with us about your project and to help put your thoughts together. It shouldn’t need to be more than 2 pages. This will be due November 1st.
The project is due May 10th. There are a lot of you and we need the time to grade your project to get your grades in on time.