Overview #
The project forms an integral part of this course. You will work in teams to design and implement a mobile app, during which you practice the software design and architecture knowledge you learn in class.
Goals #
The goals of the project include:
- to create something useful;
- to learn about architecture styles and design patterns through application in a development setting;
- to leverage current software development technologies;
- most importantly, to have fun along the way!
The scope of the project should assume at least 6h/week development time (e.g., 6 team members * 6h/week * ~10 weeks = ~360 hours in total). This should be enough time to complete an interesting project.
Restrictions #
There are two hard restrictions on the project.
- The app must be useful, taking advantage of being on a mobile platform (e.g., utilize and integrate with several services offered by the device). For example, simple database CRUD apps do not make sense in a mobile context.
- The app, namely in your code and not purely in third-party libraries/frameworks, should use at least 2 architectural styles and 2 design patterns that will be discussed in class.
In addition, consider the following soft restrictions when choosing the project topic. These are set according to the technical tutorials and assistance that will be provided in class, specifically we will suite you up for developing an Android app with lightweight cloud computing needs.
- The app should be implemented as a native Android app using Jetpack Compose (i.e., not built using an app builder or a framework like React/Node.js).
- Games are not recommended.
- Apps requiring a complex server infrastructure are not recommended.
- Apps requiring crowd buy-in (i.e., requiring large amount of users to contribute content to be viably useful) are not recommended.
You may go beyond the soft restriction(s) if needed for your project idea and you believe you can handle the technical challenges. Please consult the course staff before doing so. If you choose to do so, it is also your responsibility to setup any infrastructure/users required for demoing the app.
Examples #
Here are some demonstration videos from previous years to help you get an idea of the scope of projects suitable for the course.
- Trending topics this year include traveling, music, and digital journals.