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 make something useful;
- to learn about architecture styles and design patterns though application in a development setting;
- to leverage current technology – Android;
- 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 * 12 weeks = approximately 430 hours in total). This should be enough time to complete an interesting project.
Restrictions #
There are several hard restrictions on the project:
- The app should be implemented as a Native Android app (i.e., not built using an app builder or a framework like React/Node.js or HTML5).
- 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).
- NO simple database CRUD apps that do not make sense in a mobile context
- The app should use at least 2 architectural styles and 2 non-trivial design patterns (excluding Singleton) that will be discussed in class.
In addition, consider the following soft restrictions when choosing the project topic:
- Games are not recommended. They typically require much more effort to complete and to reach the same level of utility & polish compared to other apps.
- 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 are responsible for setting up any infrastructure/user required for demoing the app.
Installing Android Studio #
https://developer.android.com/studio/install
Use the above link to start installing Android Studio in Linux/Win/Mac Machines beforehand. The download size may vary based on the operating system/region and locale (800 MB) for Android Studio alone. Always choose the latest version of Android Studio and corresponding Gradle plugin to build APK files, which helps in reviewing code and evaluation.
SDK Installation: Use the latest Stable Android Version for SDK Compilation rather than the beta version. The preferable version can be from Android M (API 23) to Android R (API 33). As soon as you install the Android Studio, start selecting the preferred android version ( at least 1 ) and download the corresponding emulator, SDK Library, SDK Build Tools, and other utilities. Kindly allocate around 20 GB physical space for Android Studio and SDK Installation and a stable internet connection to complete all the installation setup in advance.
Emulator vs. Android Phone: Kindly use Android Mobile phone for testing by connecting it via USB for debugging, which will have a low impact on system resources while building Android apps. Otherwise, kindly install x86 Google Play/Google API Supported Android emulator for instant access and testing. Do not install ARM or other arch types that are not optimized for cold startup/booting.
Reliable Network Connection: Kindly ensure about reliable network connection for downloading Android Studio and SDK Libraries. Additional data will be required while using third party libraries to build an application or while syncing via Gradle.
Examples #
Here are some project videos from previous years to help you get an idea of the scope of projects suitable for the course.