This document outlines the guidelines for the course project. The actual project hasn’t been announced yet! We’ll discuss that in-class at the start of week 02.
Every project team will be working on the same project, and the details will be revealed in-class (around the start of the second week).
You will be given a very brief specification, but your team is expected to speak with users, do market research and brainstorm to determine exactly what features to include – every team should end up with their own unique design.
As a member of a project team, you will implement a fully-featured application using technologies introduced in this course. The type of application and exact requirements will vary term-by-term, and will be provided in a separate document. This document outlines the common structure that will be used each term.
Course enrolment for this course is closed at the end of the first week. Anyone wishing to join in the second week of the term can only do so if they join as a team, with instructor consent.
Teams must consist of four people. You will not be assigned to a team; you are expected to self-select into teams in the first week of the course.
Team members must all be enrolled in the same section, since you will be working your projects together during classtime. All team members are expected to attend class.
Ideas on how to do this:
A successful team is one where the members work well together. Look for people that you think you will get along with, and that have similar work habits. Technical ability is important, but consider the collective skills of the team – you want everyone to have the ability to contribute. The most important thing for this project is that you work together, support and help one-another!
As a team, you play the role of product managers, designers, developers and testers of your application. TAs and course staff will take on the role of Users of your application. You will regularly meet with them to clarify requirements, set goals, and demonstrate your progress.
Note that everyone on a project team is expected to participate and contribute to your project. You are also expected to act professionally with your team members at all times (see the policy statement on ethical behaviour).
As a team, you agree to hold weekly progress meetings (either in-class, or online as appropriate for the circumstances). You will need to document these meets and keep notes on what you’ve accomplished as the project progresses. TAs or instructors may attend one or more of your meetings through the term (details TBD).
You are expected to maintain your project and all related material in a GitLab project space. You will provide access to this project space to the course staff, who will review it periodically to assess your progress (and part of your grade will be based on materials that you produce and publish to this project space). You agree to keep this project space private and only available to your team, and course staff. You agree to not share directly with anyone directly or indirectly who is taking the course.
You will be provided with an initial set of requirements. You are expected to expand on these through various team activities – reviewing other similar applications, brainstorming with your team, and interviewing the TAs or instructor (who may act as potential customers in this role). From this, you will develop your own personalized set of requirements.
There is no single “correct” set of requirements; there are always multiple ways to design an application, each with its own set of features and tradeoffs.
We will be using an iterative development model that supports short iterations and feedback cycles (each iteration is two-weeks long, and called a “sprint”).
As part of this process, you will:
The process, and each requirements, will be discussed in more detail in lectures.
You will have team deliverables due approximately every 2 weeks, which will be graded. These will include:
All project members are expected to contribute to all deliverables, and everyone is expected to be present during in-person demos.
You must utilize the technologies introduced in this course for your project.
Category | Technology |
---|---|
Project Tracking | GitLab (git.uwaterloo.ca) |
Programming Language | Kotlin; Groovy |
Frameworks | JavaFX or Jetpack Compose; Ktor or Spring Boot; others with instructor approval. |
Build system | Gradle or Maven. |
Testing | JUnit; others with instructor approval. |
You will likely not be able to use the lab computers for this project, so you will need a personal computer that is capable of running these tools. Any modern computer with at least 8 GB of RAM should be sufficient.
You may also need other program assets e.g. icons, on- screen graphics, sound effects. You can create these yourself, or you can use anything that is licensed for non-commercial or educational use. You are expected to respect applicable copyright for these assets.