C211 I211 Problem Solving and Programming II
C211 I211 Team Projects
Due Date: Monday, December 11, 2023.
Project Description
You will create a project in Java with your team. Here are the
requirements for the project:
- It should involve at least 3 classes written by the team members,
4 if the team has 4 members, and some testing code. Each team member
should fully write at least one class. Please have a comment at the
beginning of every class with the team name and contributing team
member name.
- It should involve complex data structures such as arrays and/or
linked lists. Use of the library classes ArrayList and Arrays is
allowed.
- It should have at least a minimal graphical user interface, such
as we will discuss later in the semester.
- The source code (.java files) should be uploaded to a team project
in GitHub, as well as a stand-alone executable jar file. See
the instructions or the file
C211_JarFile.pdf in the Course Resources and Module 14 modules on
Canvas.
- All the participants should have a GitHub account and be added as
collaborators to the project in GitHub.
- The project should contain a README file describing the project
aim, the source files and their purpose, the interface functionality,
and anything else the user might need to run the application. You
should also credit each contributor for their work in the README file,
as well as anyone or any site you used for resources (graphics, sound
files, and so on).
- If you use an online tutorial, cite the tutorial in the
documentation, and also write down what you did add to the resources
provided by the tutorial. The 3 classes mentioned above should be
created in addition to the files that you obtained from the tutorial.
- Since jar files don't always work and I may not have time to
recreate your project locally to test it, please take some screen shots
of the running application and upload them to the GitHub repository
along with the rest of the project files. Creating a folder for them
in the repository under a name like "media" is a good idea.
Project Ideas
Here are some ideas for projects. Feel free to use these or to come
up with your own.
- Using a 2D array to generate a maze and let the user navigate it
looking for a target.
- Implementing a card game - it could be in textual mode with a
minimal interface. However, BlackJack and War are not allowed.
- Implementing a personality quiz where you ask the user some
questions with multiple choice answers, and predict something based on
their answers - such as their D&D alignment, wizardry house,
dark/light side of the force, introvert/extrovert, etc.
- Writing a bulk file rename tool that lets you select a folder,
display its content, and select a bunch of files to give them names
based on a pattern, such as "holiday1.jpg", "holliday2.jpg",
"holiday3.jpg", and so on.
- Emoji translator - inputting simple text from the user and
matching substrings to a table of emojis you have created
beforehand. The output would be a mixture of text and emojis.
- Elevator simulator - simulate an elevator going up and down in a
building with several stores. You can let the user interact to add
calls to the elevator from each of the floors of the building.
- Virtual library - implementing a collection of books and creating
user accounts. A user can check out a maximum number of books, such as
5, and after returning them, they can check out more. The same idea
can work for a car rental company, but clients would rent out one car
at a time.
Timeline
- Week 5 - Team assignments
- Week 6 - Project discussions, GitHub accounts creation
- Week 7 - Work division between team mates, Project Phase 1
- Weeks 9-10 - Project Phase 2
- Week 11 - Project Phase 3
- Weeks 10-14 - Project development
- Week 14 - Project submission and report
Rubric
- Overall project achievement (team grade) - 20 pts
- Individual contribution (individual grade) - 20 pts
- Communication and collaboration with the team and with the
instructor - 10 pts
Project Submission
The project should be submitted via GitHub. A link to the project
site should be posted to Canvas in Assignments - Project.