Capstone Computing Project

Project Proposals 2014

Below are the Capstone project proposals for this year. You will be choosing which ones of these you prefer. Feel free to email the clients if you have questions about the project.

I will post a webform right here on this website this Friday Aug 29. So, come back then and submit your preferences.

1. Door-to-Door Campaign App

Format: Mobile
Right now there is not an easy-to-use, efficient, reliable app for political candidates or advocacy groups who want to reach voters through door knocking, which is by far the most effective form of outreach at the local level.

Whenever we have a candidate for city council or State House or State Senate, we tell them 75% or more of their time should be spent door knocking. The problem is we still usually have to do this with a clumsy system of spreadsheets and pens and post-door-knocking data entry. Our firm has significant voter data in house and there's no reason we can't build an incredible, simple, beautiful app that removes all the extra effort from door knocking and allows candidates and activists to focus on talking to voters and collecting data.

Call for Project Proposals

I am looking for people who need an app developed for them, for free, by our students.

I will be teaching our Senior Capstone Software Project class in the upcoming academic year. In this class our Senior students form groups of 4 or 5 students and each group builds an app. The app can be anything from a mobile app, a web app, a video game, or even software/hardware to control a robot. The project starts in August and ends in May 2015. You can view this year's projects to see what our students did this year.

If you are interested in having an app built for you, by one of the teams, just email me the following:

  1. Your name and email address
  2. A one paragraph (minimum) description of the app you want built: what it will do, who will use it, where will it run, etc.
  3. The platform you want to build on, that is, iPhone, Android, Mac OS desktop, Windows desktop, web application, etc. and any other specific technical requirements you might have. It is OK if you have not yet decided on one, just say that.

If a group chooses your project proposal I will expect you to meet with them at least one hour every two weeks (video meetings are OK, of course) and be available to the students via email to answer questions. You will also be asked to evaluate the final project and interim versions. I expect that the need for feedback will be greatest in August and September, as the project gets started.

By default, all code written by the students belongs to the students, as per USC's Intellectual Property Policy ACAF 1.33 IV.B. If you require some other ownership agreement then email this to me also. I will post it at along with your project description so the students are fully informed before choosing a project.

I will need to receive your project description before the first day of classes: August 21.

See the Client Information and Legal issues page for more details.

Demo Day Photos

Checkout the photos I took of the presentations. We had a lot of very high quality projects this year. You should be proud of the work you did. These are solid apps that demonstrate you know how to get things done, how to code up something others will actually want to use!


On our first day in 490, we talked about licensing issues. Basically, you own all your code (unless, you signed a separate deal with your client).

I recommend you release your code under the MIT Open Source license and make your github repo public. This way you get protection, no one can use you for bugs in your software (yes, it could happen) while you still get authorship credit forever, as well as some exposure, which might come in handy next time you are looking for a job.

Capstone Projects Video Showcase

The students in our Capstone Project class, all Seniors, form teams every year in order to design and develop a sophisticated app for an independent customer. This year there were 14 apps developed: web apps, iphone apps, android apps, and desktop apps. The projects vary, from a mobile-accessible database for maintaining geological samples, to mobile apps for monitoring queue lengths at voting stations, to a tablet app for viewing historical maps. You can watch video demonstrations below and get links to the projects' websites. You can also see photos of the students doing live demos.

Individual Assessments and Senior Survey

Below are two online forms that you have fill out as they are part of your grade before April 29 @midnight. Note that if you first login to this website you will be able to "Save as Draft" your form so you can come back and finish it later.

First you have to fill out the

Then you have to fill out the Senior Survey form. These are required by the College of Engineering and our Accreditation agencies for all Seniors. We do it in 492, so all of you should fill it out regardless of when you plan to graduate. There are different questions for each major. Only fill out the one for your major:

Finally, if you haven't already and you graduate in May or Summer, please fill out our Graduation survey.

Personal Contributions and GitHub

As you know, your personal contribution to the project can count for up to 100% of your grad. Git keeps track of every single commit you make, and github displays these in nice graphs which you can see by clicking on "Graphs" and then "Contributors", as shown in the images below. By default, these graphs are for the "master" branch, but you can change the chosen branch by going to "Settings" and changing the "Default branch" to whatever you want. Please do this if your main branch is not "master".

Capstone RC1 Testing Assignments

As per our Milestone 15: QA you will test another group's project, and be tested by them. Please read M15 for details on what you need to do.

The assignments are shown below. Note that these are not commutative. That is, if A tests B, it does not mean that B tests A. Let me know if you need the email addresses of your assigned group.

Commit Early and Often

You should be commiting your code at least once per hour, and at the end of the day. If you only work 1 day (8 hours) per week on this project (really, you should work more than that) you will have at least 12*8 = 96 commits in just these first 3 months.

Some basic rules:

  1. Never commit something that does not compile or is super broken.
  2. Commit whenever you "finish a thought": implement the first version of a new page, get that function to read from the database, get that form to show, etc.
  3. Push every day, at least.
  4. Pull every morning, at least, unless you really are in the middle of something. Resolve conflicts as soon as possible

See this stack overflow question and this programmers.stackex question for many other people who agree with me, well, rather, I agree with them. But, for this class I additionally require you to commit a lot so you can get comfortable with the process and so we (your team and I) can see your progress.

Those of you new to the class will want to read my Git and Github slides and pointers.


Subscribe to Capstone News