Research Milestone¶
Due Date¶
Due Date: October 11
Grading: Individual
Description¶
As a developer, you need to be intimately familiar with the technologies you are or could be using. You need to understand the pros, cons, and requirements of each library and platform that is relevant to your project. Thus, you need to be up-to-date on technology and, since technology seems to be always changing, this will be something you need to do throughout your career.
Specifically, you need to
- Know about the various platforms available to you: their options and limitations.
- Know about the various libraries that you can use to make your work easier.
- Download, install, and build sample 'Hello world' apps using the most promising technologies. It is not enough to just read about it, you have to do it in order to learn.
- Learn how to use the specific framework+libraries you choose to use for the project by building little apps with them.
- Learn to use your package manager.
All of the above needs to be done before you start coding together with your team. Do not assume your teammates will teach you. You are responsible for learning.
In this Milestone you will research various technologies and build a sample app using the technologies you think are best for your project. You will be doing this individually, not as a team, so everyone can develop their own opinions. After you are done, you will share your findings with your team and decide together which technologies you will be using for your project.
Example¶
For example, say you are building a Django webapp. In that case you need to learn:
- The basics of the Django Web Framework. That tutorial has 11 parts. You need to do all of them.
- This means you need to know HTML and CSS to some degree.
- Django uses Python, so you want to start by learning that.
- Before you even get started you have install the whole thing. This means you
have to learn about how to Set up a Django development
environment,
which means learning about Python virtual environments and your package
manager (
pip). For Python projects I recommend uv, see their projects guide. - You will need to deploy the webapp, so you need to learn about deployment: Part 11: Deploying Django to production.
- As part of deployment, or maybe earlier, you will have to figure out which database (Postgres) you will use and how to set it up.
So, yes, this is a lot of stuff. Obviously you will not be an expert in all these technologies, no one is. But you have to know enough about all of them to be able to build and deploy your webapp.
Info
Teams often neglect to learn about how their package manager works.
Popular ones are: npm, uv, pipenv, gradle, yarn, cocoapods.
Learn how it works. It will help you figure out why your project builds for
your teammate but not for you.
AI Tools¶
Do use AI agents and similar tools to help you learn the new technologies and build your sample app. Of course, if you let the AI do all the work then you will not know how it works or what design tradeoffs were made. Your ignorance will become a problem as the team project grows.
AI tools should allow you to quickly try out multiple different technologies and examine their pros and cons.
After You are Done¶
After everyone in your team finishes this Milestone, your team should meet and discuss what you all learned. The team can then make an informed decision about which technologies to use for your app, and how to start organizing your code.
Deliverables¶
- Each person must create their own personal repo at GitHub, in their personal account. Either make it public, or give us read access to it.
- In that repo you will place your sample project built using your team's chosen framework. It will have multiple commits, all by you. You might want to link to it in your Weekly Report.
- The project will be more than just "hello world", or cut-n-paste from a tutorial. You can start with the tutorial code, but you must add your own code to their code. The app should have some minimal interactivity: user enters some data,program does something with it and shows the user.
- Make a short video demonstrating how your app works.
- Create an Issue in your team repo titled "Research Milestone: yourusername" and both the video and a link to your research repo to that Issue. Assign or mention me and the TAs in that Issue (@instructors).
Grading Rubric¶
Grade is 100 minus the total points lost, with minimum of 0. See grading scale in Syllabus. Points lost are:
- No Issue created in team repo: 50 points.
- No repo created: 50 points.
- Did not have video: 50 points.
- App is too simple, just a "Hello World"-type app: 0–30 points.