Final Project
Description
The goal of the final project is to create a single-page, native-style mobile web application written in Ember.js that runs on iOS and Android browsers and/or in native app wrappers as a hybrid app.
The project may be developed individually or in teams of two students. If you work in a team, you will be responsible for making it clear which portions each student was responsible for. Unless there is a significant inequity in the amount of work performed by the students, all members of a team will receive the same grade.
The project grade will be comprised of the following elements:
- Project Pitch: Due Jan 13th, 2015 @ 6AM (5% of grade)
- Milestone 1: Due Feb 3rd, 2015 @ 6AM(5% of grade)
- Milestone 2: Due Feb 24th, 2015 @ 6AM (5% of grade)
- Presentations: In class Mar 10th & Mar 12th, 2015 (5% of grade)
- Final Submission: Due Mar 19th, 2015 @ 6PM (20% of grade)
Project Pitch
The first stage is pitching your project to me by writing a one page document (one per team) describing user interface and functionality of the mobile web application that you want to write. You will review this document with me and we will discuss the feasibility of the application in the duration of the class. It is best to create an application that you can create iteratively so that you can easily add or remove functionality if you run out of time.
Some types of applications are not allowed as they are common examples of Ember.js apps:
- List or todo managers
- Twitter clients
- Weather apps
- Timer apps
If you want to write an application that is in one of these genres, it must have a truly unique twist. If you decide to do this, please be sure to check with the instructor first. You do not have to write your application using Ember.js, but it has to be written in a higher-level JavaScript MVC framework or using a HTML5 game engine. See http://html5gameengine.com to see examples of gaming engines that you can use.
Partners:
If you need a partner, you can recruit members for your team at the end of class the first week. Also, you will have time to get together and talk during class time that day. Up to two members.
Examples
-
GrouponLite: Created by Peter Bergström as an demo of Ember.js
-
2048: Created by Gabriele Cirull. Very popular game written in JavaScript. While not using a MVC framework, it’s a great example of a game.
-
Also, many of the iOS and Android apps that you use every day have some mobile web app component, so you might be using them without knowing.
I think that you can almost create any type of native-style app in JavaScript, with some limitations. Don’t be afraid to pitch an idea that you have for a native app because it might very well be possible to write it in JavaScript!
Project Pitch Submission (Due January 13, 2015 @ 6:00AM)
Please submit your proposal as a PDF in Camino. One per team please. For the write up, please submit one per team and include your names. I will then set up groups in Camino.
Tips
- Most successful apps either solve a meaningful problem or entertain
- Try to make an app that is useful to you
- Use version control such as Git so you can easily share code between team members or even give me access to make grading easier
- Host your app somewhere so I can easily run it. Let me know if you need help.
Milestones
The milestones will be graded based upon the progress made since the previous milestone. For Milestone 1, roughly 1/3 of your project should be complete. For Milestone 2, roughly 2/3 of your project should be complete. Feedback will be given to help you steer your project in the right direction. While these milestones are not a large part of your grade, I expect that you do submit your progress so that I can help you get the best possible final submission grade.
Milestone Submission via Camino (Milestone 1 due February 3, 2015 @ 6:00AM and Milestone 2 due February 24, 2015 @ 6:00AM)
For the submission, please include a zipped file containing:
- Your project code
- A detailed README file that has an itemized list of tasks you accomplished and approximately the time spent on each item. You may include time spent learning about topics not covered in class and time spent debugging issues.
- The README should link to a hosted version of your code if it needs a hosted site. Otherwise, I will test it out locally on my Mac but I will not install a server component on my machine.
- Any questions you may have.
- Any additional documentation.
- Make sure that you properly attribute open source projects and other resources that you use.
Alternatively, you can point me to a Git repository if that is easier for you. However, still submit a copy on Camino.
Project Presentation (In class on March 10th and March 12th)
A presentation is required for the project. The presentation should be about 10-15 minutes depending on the number of teams that form. An ideal presentation should contain the following:
- Describe the goal of the application
- While you may not be done with the application, you should have something to demo by:
- Running on a device
- Running it on a simulator
- In a web browser (the least cool way, however)
- Discuss the technologies used
- Discuss the challenges you were presented
- Discuss any new things you discovered that wasn’t covered in the class
- Describe your next steps as you finish the final project over the next week or so
There will be a quick Q&A from the instructor and other students at the end of each presentation.
NOTE: The project does not have to be complete at this point since you still have time for your final submission.
Final Submission (Due March 19, 2015 @ 6:00PM)
For the submission, please include a zipped file containing:
- Your project code
- A detailed README file that has an itemized list of tasks you accomplished and approximately the time spent on each item. You may include time spent learning about topics not covered in class and time spent debugging issues.
- The README should link to a hosted version of your code if it needs a hosted site. Otherwise, I will test it out locally on my Mac but I will not install a server component on my machine.
- Any additional documentation.
- Make sure that you properly attribute open source projects and other resources that you use.
Alternatively, you can point me to a Git repository if that is easier for you (it will be easier for me). However, still submit a copy on Camino.
Grading
As stated above:
- Project Pitch:5% of grade
- Milestone 1:5% of grade
- Milestone 2:5% of grade
- Presentations:5% of grade
- Final Submission:20% of grade
However, to reward students who pick challenging projects, the final submission score is weighted with a difficulty multiplier from 1 to 4, 4 being the most difficult. The final submission grade is segmented into 5% increments that then are multiplied by the difficulty. I will assign a difficulty multiplier during the project pitch and milestones and give you guidance on how to maximize your score.
For example:
- Tim is working on a very challenging project that will take him 100 hours of coding, he would be able to get a multiplier of 4x making his maximum possible final submission score be 20%.
- Andy is working on a very easy project that he can get done in 2 hours right before the deadline, he would only get a multiplier of 1x making his maximum possible final submission score be 5%.
Your grade is evaluated in the following ways:
- Success Factor
- Does your application do what you pitched at the beginning? Does it run on the browsers or platforms that you have decided to target? Does it perform well? Does it crash?
- Development Style
- Is the code easy to read and manage? Is the project organized and implemented in a way that it is extensible and easy to debug? Are you properly applying design patterns to make your code better?
- Applicability
- Does the project reflect an understanding of the topics covered in the class to create a native-style single page mobile web application and does it use a high-level MVC framework to achieve this goal?
- Visual Design and Polish
- Is the application well designed visually and is it clean? Does it have a consistent user interface and user experience? Does it feel like an app and not a web page?
Deductions (No exceptions)
- Late assignment: -50%
- No identification of authorship in multi-person project: -20%
- Missing files: -20%
Server Side Components
While this course focuses on client-side of creating a mobile web application, you will most likely need some way to access data through a REST API. I recommend using existing services such as Parse that can help you create a backend server component without a lot of work.
As the application that you are writing is going to be static HTML, CSS, and JavaScript at it’s most basic level, it does not matter what server-side technology you choose. Java, PHP, Ruby, Node, Python, and more is up to you to implement and will not be considered in grading. However, how you define and manage your REST API and JSON responses will be counted.
Submissions
All assignments should be submitted to Camino before class (4PM) on the due date. Make sure to include all files and libraries needed for running your application.