Description
The Final Project is the culmination of what you have learned in this course. It gives you an opportunity to demonstrate the technical skills that you have learned in this course by developing an application that utilizes the core topics you have learned in this course (IOStreams, Multi-threading, Networking, and working with databases). You’ll work in teams of 2-3 people to build a tool or software system that tackles a real-world problem.
You should state the platform you will be developing for (Android, iOs, web, desktop GUI, or CLI tool), and the technology stack you plan to use including frameworks. Your project should demonstrate your understandings of IOStreams, Multi-threading, Networking, and Database. On the last week of the semester, you will present your work to the class.
In short, come up with an interesting problem and solve it in an app. You may extend a tool you prototyped for a previous class but have not actually fully implemented it as long as the remaining work is significantly more than the previously-submitted work. What to build for your project is entirely up to you. Here are just some of the possibilities. If you’re not sure about an idea, talk to your instructor! And if you’d like to solicit collaborators for an idea you have, please post in our MS Teams channel!
- a command-line interface (CLI) tool using Java
- a desktop application in Java Swing or JavaFX
- an Android app using Java or Flutter
- a web server using Java
- an interesting interactive chat and collaboration tool
It is recommended that you come up with an idea for a small yet interesting app that solves a problem you are passionate about. For example, if you’re a car enthusiast, you may build a car repair estimate app, an app that lists the most common car problems and recalls for a given manufacturer and model, or an app that lists the resale value of a used car. And if you’re into sport, you may build an app that shows all local sport events such as basketball and volleyball, etc. that are taken place in your city. The data can be manually populated into a database or collected via a public API. It does not have to be massive or complex!
It’s always great to start brainstorming with your team around something you all care about and love to build for. If you want to talk more about it or need help coming up with an idea, talk to your instructor.
Note: If you plan to find a local dataset for your app, please take a look at the Saudi Open Data Platform, which may help you find a free dataset related to your problem. If you’re having trouble coming up with an idea, please talk to me in MS Teams.
Grading
The project is worth 15% of your course grade. The following factors will be taken into consideration when grading your project:
Grading Rubric
Category | Criteria | Excellent | Fair | Poor |
---|---|---|---|---|
Technical Implementation (9 marks) | ||||
IO Streams | ||||
- Implementation - Effective use of I/O Streams | 1 | 0.5 | 0 | |
- Data Processing - Reading and writing into files for tasks like data processing, importing, or writing logs | 1 | 0.5 | 0 | |
Multithreading | ||||
- Thread Management - Proper thread creation and concurrent operations | 1 | 0.5 | 0 | |
- Synchronization - Effective synchronization and thread safety | 1 | 0.5 | 0 | |
Networking | ||||
- Client-Server Architecture - Implementation of client-server architecture | 1 | 0.5 | 0 | |
- HTTP Requests - Appropriate use of the HttpClient class to send HTTP requests and retrieve responses | 1 | 0.5 | 0 | |
Database | ||||
- Schema Design - Efficient schema design and data integrity | 1 | 0.5 | 0 | |
- CRUD Operations - Proper DB connection and CRUD operations | 1 | 0.5 | 0 | |
Exception Handling & Resource Management | ||||
- Proper error handling and closing of resources | 1 | 0.5 | 0 | |
Project Quality (4 marks) | ||||
Problem Complexity & Innovation | ||||
- Depth of problem addressed and solution creativity | 1 | 0.5 | 0 | |
User Experience & Interface | ||||
- Intuitive design, ease of use, and proper error feedback and recovery | 1 | 0.5 | 0 | |
Code Quality | ||||
- Organization, readability, version control | 1 | 0.5 | 0 | |
Testing & Reliability | ||||
- Unit tests with proper coverage | 1 | 0.5 | 0 | |
Project Management (2 marks) | ||||
Version Control | ||||
- Proper Git workflow and equal contributions | 1 | 0.5 | 0 | |
Project Documentation & Demo | ||||
- Complete README file and effective project demonstration | 1 | 0.5 | 0 | |
Total: 15 marks |
Presentation and Demonstration
Each team will have 10-15 minutes to present their project to the class, covering:
- Problem statement and solution approach
- Technical architecture overview
- Live demonstration of key features
- Challenges faced and solutions implemented
- Code structure and implementation
- Q&A from instructor and peers
Submission Requirements
- Complete source code (via GitHub repository)
- README.md file with description, setup and usage instructions, and screenshots of the project.
Note: Projects that go above and beyond the minimum requirements (implementing additional advanced Java features, exceptional UI/UX, innovative solution to a complex problem) may receive extra credit consideration.