Research Milestone¶
Due Date¶
Due Date : October 13
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.
This milestone will take a lot of time and work, which is why you should start working on this milestone on the first week of classes.
Example Learning Curve¶
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 Pipenv which wrapspip
andvirtualenv
to make things simpler, especially for team project. - 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
, pip
, 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.
Never Stop Learning¶
If you take a look at the technologies used in past years for Capstone projects you will find a long list of technologies: node, Angular, Unity, mongo, .NET, ionic, react-native, flutter, Java FX, Django, and so on. There is a very large set of ever-evolving and changing technologies in the software business. No one can know all technologies, but no one is expected to either. You are only expected to always be learning.
In your career as a developer you will be learning a new framework or a new programming language every year. Our industry revolves around innovation. If you stop learning everyone else will pass you by.
So, what you have to do for this Milestone is exactly the same thing you will be doing every year for the rest of your career: teach yourself a new platform, a new programming language, a new technology.
We are here to help . Reach out to us if you need help. We can point you in the correct direction and maybe get you un-stuck.
Deliverables¶
- Each person must create their personal repo by following this link at GitHub. Your repo will have the name
research-yourusername
. - 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 word", 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 you start your app (say, from your IDE or command-line) and then use your app. Add the video to the research-repo ans an Issue, or to youtube, or similar. Add a link to your video in your
Readme.md
file or @instructors in the Issue.
Warning
Make sure you create a repo by following the link above. Repos created in your personal account or elsewhere will not be accepted.
Grading Rubric¶
Grade is 100 minus the total points lost, with minimum of 0. See grading scale in Syllabus. Points lost are:
- No repo created, empty repo, repo without code, repo with code irrelevant to project: 0–50 points.
- Did not have video: 50 points.
- App is too simple, just a "Hello World"-type app: 0–30 points.