Object Oriented Programming

University of Prince Mugrin

College of Computer and Cyber Sciences

Computer Science Department

CS112

Object Oriented Programming

Project

Student Name: …………………………………………………………………………………………………………………………

Student ID: ……………………………………………………………………………………………………………………………..…

Section: ………………………………………………… Group: ………………………………………………………………….

Session (Fall / Spring / Summer): ………………………………………………………………………………

___________________

Objectives

Apply what have been learned throughout the semester on a project of your choice.

Project Learning Outcomes (LLO)

Develop and implement a program using Object-Oriented concepts 

Requirements
Java Compiler software (NetBeans, Eclipse, etc…)

Description

The project is going to be a group project, the group of 2 to 4 students.

You have one week to form the groups and identify your project idea, then you have to get the approval from your instructor.

It will be counted as 15% of your final mark.

Submit it in TEAMS under the subject “CS112 – Project”. ‎

All submitted work must be presented by the group.

The submission date for the project is May 20, 2022

(10% of the marks is lost for each day, or part of a day, the submission is delayed)

Deliverables:

Note: Please submit all files in one zip file.

The code with all the attachments.

The project report and PowerPoint presentation which contain:

Brief of the project

Project advantages

Target audience

Project objectives

Problem statement

Project implementation steps (Flowchart and Algorithm)

Use case scenarios with screenshots of the final output

Evaluation Rubric

Marks shall be awarded for fulfilling the project requirements that include:

Complete analysis and design that includes the flowchart and algorithm design.

A complete and working program according to the problem statement.

Submission of a project report that contains your design and program.

A power-point presentation of the project before the end of term.

The teamwork must be clear and all the team members must ‎understand every detail of the project.

Marks distribution according to deliverables:

Deliverable

Mark

Project implementation

7

Project report

2

Project presentation

3

Teamwork

3

Your implementation is expected to include the following concepts: 

Concept

CLO

Mark
(Implementation / Report and PPT)

Basic Java structures:

Input statements and File Input and Output

Selection statements (nested)

Arrays 1 (2d array ) or 2 (1-d array ) with loops (nested)

2.2

4 (3/1)

Classes (it should include all the rules of creating a class, inheritance, and polymorphism)

2.1

4 (3/1)

Error free run (Tip: use exception handling)

2.3

2 (1/1)

The program should be readable and easy to understand

3.1

2 (1/1)

The teamwork must be clear and all the team members must understand every detail of the project

3 (2/1)

Use graphical user interface GUI

bonus 2

Suggestions (JAVA Project Ideas) -Beginner Level

You can choose any other topics.

These topics are not obligatory, but are just suggestions.

If you find an idea suitable for you, present it to the instructor, and when you

get approval, start the project)

Choose a good idea to apply what was previously studied in the CS112

curriculum

Some suggested topics:-

Password generatorBuild a secure password generator in JAVA.

Use Tweepy to create a Twitter bot — This is bit more advanced, as you’ll

need to use the Twitter API, but definitely fun!

Build an Address Book — This could start with a simple JAVA dictionary or

get as advanced as something like this!

Create a Crypto App with JAVA — This free video course walks you

through some API use and JAVA to build apps using cryptocurrency data.

Create a “Code” Generator that takes text as input and replaces each letter

with another letter, and outputs the “encoded” message.

Build a “countdown calculator.” Write some code that can take two dates as

input, and calculate the amount of time between them. This will be a great way

to familiarize yourself with JAVA’s datetime module.

Write a Sorting Method. Given a list, can you write some code that sorts it

alphabetically, or numerically? Yes, JAVA has this functionality built-in, but

see if you can do it without using sort()!

Build an Interactive Quiz. Which Avenger are you? Build a personality or

recommendation quiz that can asks users some questions, stores their answers,

and then perform some kind of calculation to give the user a personalized end

result that’s based on their answers

Tic-Tac-Toe by Text. Build a Tic-Tac-Toe game that’s playable like a text

adventure. Can you make it print a text-based representation of the board after

each move?

Make a Temperature/Measurement Converter. Write a script that can

convert Fahrenheit to Celsius and back, or inches to centimeters and back, etc.

How far ca you take it?

Build a counter app. Take your first steps into the world of UI by building a

very simple app that counts up by one each time a user clicks a button.

Build a number guessing game. Think of this as a bit like a text adventure,

but with numbers. How far can you take it?

Build an alarm clock. This is borderline beginner/intermediate, but it’s worth

trying to build an alarm clock for yourself. Can you create different alarms? A

snooze function?

Build an Upgraded Code Generator. Starting with the project mentioned in

the beginner section, see what you can do to make it more sophisticated. Can

you make it generate different kinds of codes. Can you create a “decoder” app

that reads encoded messages if the user inputs a secret key? Can you create a

more sophisticated code that goes beyond simple letter-replacement?

Make your Tic-Tac-Toe Game clickable. Building off the beginner project,

now make a version of Tic-Tac-Toe that has an actual UI, and that you play by

clicking on open squares. Challenge: can you write a simple “AI” opponent

for a human player to play against?

Scrape some data to analyze. This could really be anything, from any

website you like. The web is full of interesting data, and if you learn a little

about web-scraping, you can collect some really unique datasets.

Build a Clock Website. How close can you get it to real-time? Can you

implement different time zone selectors, and add in the “countdown

calculator” functionality to calculate lengths of time?

Automate some of your job. This will vary, but many jobs have some kind of

repetitive process that can be automated!

Automate your personal habits. Do you want to remember to stand up once

every hour during work? How about writing some code that generates you

unique workout plans based on your goals and preferences? There are a

variety of simple apps you can build for yourself to automate or enhance

different aspects of your life.

Create a simple web browser. Build a simple UI that allows for URL enter

and that can load webpages. PyWt will be helpful here! Can you add “back”

button, bookmarks, and other cool features?

Write a notes app. Create an app that helps people write and store notes. Can

you think of some interesting and unique features to add?

Build a Typing Tester. This should show the user some text, and then

challenge them to type it, timing them for the length of time it takes them to

finish, and scoring them on their accuracy.

Create a “site updated” notification system. Ever get annoyed with having

to refresh a website to see if an out-of-stock product has been relisted, or to

see if any new news has been posted? Write a JAVAs script that automatically

checks a given URL for updates and informs you instantly when it identifies

one. (Be careful not to overload the servers of whatever site you’re checking,

though — keep the time interval reasonable between each check).

Recreate your favorite board game in JAVA. There are tons of options

here, from something simple like Checkers all the way up to Risk or even

more modern and advanced games like Ticket to Ride or Settlers of Catan.

How close can you get to the real thing?

Build a Wikipedia Explorer. Build an app that displays a random Wikipedia

page. The challenge here is in the details: can you add user-selected

categories? Can you try a different “rabbit hole” version of the app where each

article is randomly selected from the articles linked in the previous article?

This might seem simple, but it can actually take some real web-scraping

chops