Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

Introduction to Java

CS9053

Java Final Project

Proposals: August 5th, 2022 (flexible)

Due: August 26th, 2022 (pending information about deadlines from the registrar)

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.

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 three-tiered data system from scratch:

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.

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

Yahtzee is a dice game. To implement this, you need to create a UI and graphics to depict the dice (and rolling of the dice). Other additional features can be a network server to save the game and/or maintain top scorers. Alternately you could write a multiplayer game where different players connect to a server and play the same game. This is primarily a UI-based game.

Graphics-based games: The Snake Game

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 here.

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 https://datasetsearch.research.google.com/), such as HTTP to network traffic data and either in files or stored in a database. Have some kind of interface that allows you to select one of several different log files. The user will select one and then Java will do various forms of analytics, such as a traffic histogram or visualization of traffic destinations. This will require good facility with Java graphics as well as Java analytics. In addition, there should be some kind of remote load/save functions. See if you could multithread the analytic process.

Multithreaded Web Crawler

This would require you to learn a bit about Java’s URL and HTTP classes (see this Oracle tutorial and these explanations on StackOverflow). Then select a starting URL, download the initial page, and get all the http links and download all of those links, and repeat up to a given depth. Each of those links should be sent to a separate thread which does the download. Keep a log of the URLs and information about the data in those links (like how big they are, what the path to that link is, and so on). Create some kind of browsable index of all of the links and associated data.

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 April 13th.

The project is due May 12th, early in finals week. There are a lot of you and we need the time to grade your project to get your grades in on time.