Specification
Choice of Project
You and your team will need to choose from one of projects listed below
It is equally possible to get a good grade with any of these projects. However, features vary in complexity and effort required, so your choice will obviously have some impact on how your term will proceed (e.g. you may need to spend more time tinkering with graphics for the UML editor compared with other projects).
The lectures tend to deal with broad problems that you will encounter in any project (e.g. “how do I use a local database”, or “how do I build a GUI”), and aren’t tied to any specific project.
Requirements
The specification documents below describe required features for each project. Implementing these features is sufficient to pass the project and the course.
However, for a higher grade, you may wish to consider adding extra features. From the Assessment page:
Each project specification includes both Required Features and Additional Features. You are expected to deliver ALL of the Required Features, and doing so will earn you up to a B on the Final Submission. If you wish to earn a higher grade on the Final Submission, you need to implement one or more Additional Features. Each specification has some ideas, but you are welcome to come up with your own as well - just check with the TA and instructor to make sure they are reasonable additions.
Technical Stack
Regardless of the project you choose, you need to use the following technical stack:
- GitLab for project tracking.
- Kotlin as your main programming language.
- JavaFX for the graphical user-interface.
- JSON, Java Preferences API or plain text files for local data storage.
- Ktor or Spring Boot for a cloud/web service.
- JUnit for unit testing.
- Gradle for builds.
If you wish to use anything different, you must gain instructor approval1.
You will need a personal computer that is capable of running these tools. Any relatively recent computer with at least 8 GB of RAM should be sufficient. These tools all run on macOS, Windows and Linux equally well.
-
Email is fine, but the request and approval must be in writing, and included in your project documentation (e.g. README). ↩︎