Midterm Project

For your Midterm Project, we would like you to come up with an app idea, and implement it. The app should not be very complicated, but should demonstrate that you have learned something in the first month and a half of class. You may work in groups of 2. With that said, everyone in the group should be contributing to the project, and should be doing some coding. We don't want one person to just be "the designer" and another person to be the "engineer".

Git Usage

You are required to use Git to manage your project progress. This does not mean one commit per week, or (even worse!) one commit at the project deadline like most of us have done with the homeworks. This means each person working in your group should make several incremental commits over time, to demonstrate good project management.

You can use the submit.sh script if you want. But remember, your "submissions" should be incremental. So, for example, your workflow could be something along the lines of:

*make empty project*

terminal$ ./submit.sh
Add some information about what youre submitting (e.g. submitting hw2): Made empty project!

*add some model code*

terminal$ ./submit.sh
Add some information about what youre submitting (e.g. submitting hw2): Added code for NounDictionary model.

And so on and so forth. The key is to do this incrementally.

If you prefer the usual add-commit-push way of doing things, go ahead. Just make sure you don't allow Xcode to make a Git repository for you.

If you're planning on working in a group, you MUST contact Mike by Wednesday (Feb 11) at 11:59PM. Otherwise, we are assuming you're working in a group of 1. We have to set up special repos for you guys.

Due Date

The final due date for your project will be Monday March 2nd at 11:59pm.

Receiving Files

Run git pull to receive your mid folder.


The usual Git way of submitting things.


You will have some required checkpoints along the way. This is to ensure that you are on top of your project and can manage your time effectively. This shouldn't be a very long or large project, but good time management is key in software development. That being said, the due date tends to creep up on you, so it would definitely be a good thing to come to each deadline prepared.

Checkpoint 1: App Idea/Mockup - Monday, February 16th at 6:30 PM

At this checkpoint, we want to see a rough sketch of your idea. You should have a design direction, maybe some colors picked out, and maybe even have wireframes drawn out. To submit this checkpoint, you must push AT LEAST a project_proposal.txt inside your mid/project_proposal/ directory. In this file, you should specify your andrew ID, your app name, and your app idea (described in a few paragraphs). You should explain all the functionality to intend to cover, and how you plan to accomplish it. In the mid/project_proposal/ folder, you should also put any wireframes that you wish to include with your project. These are optional (though well-planned-out projects with wireframes are historically the best projects).

Checkpoint 2: Working Prototype - Monday, February 23rd at 6:30 PM

Your application should function on a basic level. We're talking, like 50 percent complete. We will check your repos at the deadline and make sure you're making some decent progress (and are using Git incrementally). If your app doesn't build or doesn't work or doesn't have anything on the most basic level, we'll probably want to talk to you after class. Your app should look like crap at this point. Take the next week to fix up your app and make it look pretty.

Checkpoint 3: Final - Monday, March 2nd at 11:59 PM

You will present your app to the course staff on this date. So, you should prepare for a 5 minute presentation on this day to show off any and all cool features in your app. However, you don't need to formally submit until 11:59 PM. More information as we get closer to the date.

Helpful Tips

Your app should be simple. Do not try and make the next greatest app. That's what your final project is for. This should be an extremely simple application in both design and implementation. Use stock components. Use third-party libraries to make things simple for you. The total amount of time spent on your application should be no more than 10-12 hours over an almost 3 week period.

To help you work on this project, there will be no additional homeworks due until the project is complete, and we will be having several lectures which you will find extremely helpful towards making your app. Good luck!