Description
Overview
As discussed during the lectures, there are many technologies and tools you can use to build a modern software product. In this assignment, you are asked to familiarize yourself with some of the key tools you can use to build two of the most common types of software (web and mobile). You can see this assignment as a preparation for your project or the first step in familiarizing yourself with the modern software engineering world. You will work in teams of two to build a
tech stack, for a mobile or web application. The application you will be building is a simple checkout price calculator with basic functions. You can think of the functionalities as that of the system that is used during checkout. Use cases can be adding items, removing items, applying discounts, adding tax, and any other realistic functionality you want to add but keep it simple. (you don’t need any additional functionality, like save, load, advanced UI, etc.)
As you can see, the focus of this assignment is not on the complexity of the software but the infrastructure you need to establish to be able to develop the software.
Assignment breakdown
This assignment has two major paths:
- Web application: “How do we build a web application that can easily be developed, tested, maintained, and deployed?” is the question leading this part of the assignment. You will research various solutions and steps needed and build on top of what we have talked about in the lectures. You can consider this web application would need (not part of the assignment) some standard functionality such as login, search, post comments, etc. and no special features (e.g., advanced visualizations, AI components, etc.). Your application must be responsive.
- Mobile application: “How do we build a mobile application that can easily be developed, tested, maintained, and distributed?” is the question leading this path. You can make an assumption about whether your application needs to run on Android, iOS, or both. But you must clarify that assumption in your report.
The process you follow for each path is very similar. However, the end result will be different. Please choose the path that you think your project will be in.
Next Steps
Your customer has chosen you as their trusted advisor and asked you to recommend a solution for their needs. You can start your research from the roadmaps we have seen during the lecture. Consider three main technologies to use for each part. For example, for the backend of your web application, you can look at Node, Python, or Go, or any other language you find interesting. For the frontend of your application, you can look at Vue, React, Angular, or any other language/framework. You will then need to compare the options you have chosen.
Considerations can include (but should not be limited to):
- Ease of development for you (e.g., you know Python but Go may be new to you)
- Maturity of the language/technology and the libraries available for integrations/UI
- The domains covered by the technology/language (e.g., Python also supports ML projects while Javascript can do both frontend and backend).
- Popularity of the language/technology. You can look at HackerRank 2020 Report, Stackoverflow 2019 Survey, or JetBrains Developer Ecosystem report.
- Performance, scale and speed of the solutions built with these technologies. 6. Any other criteria you think is important and needs to be considered
Your tech stack needs to include solutions for the following:
- Frontend technology
- Backend (web or mobile)
- Needs to include Testing Infrastructure (e.g., PyUnit for Python unit testing). You don’t need to have comprehensive tests. One test is enough.
- Continuous Integration & Continuous Delivery (CI/CD)
- Database (we will talk about databases in one of future lectures in more depth)
Your setup needs to support:
- One development environment and a production environment.
- Automated deployment on merge at least to the development environment.
- You can use any of the CI/CD tools.
- Your deployment needs to include running test(s)
Deployment
You are expected to make your applications available for your TA to see, test and grade (mobile and web). You will need to “deploy” your applications. We will use the word deploy loosely here meaning that you need to have your web application available via a url and find a way to share your mobile app with the TA (e.g., apks, expo, developer account sharing, video recording, etc).




