Final Projects

All of the mock app store submissions have been posted online.

Final Projects

Final Projects

Final Project — Presentation & Demonstration

Due Date (for Slide Submission)

Wednesday, December 15th — 11:59pm

Background

Final project presentations and live demonstrations will occur during the time allotted for the final exam (Thursday, December 16th 6–8pm). Each group will be scheduled a 3½ – 4 minute chunk of time for their presentation and demonstration. This time limit will be strictly enforced. The specific order of presenters will be determined next class.

Your presentation should consist of a minute or so of slides which present an introduction to your application, followed by an actual live demonstration of your app.

Your slides must be in PDF format and should contain the following content…

  • Title slide — consisting of app icon, app name and team member names
  • App Description slide — a one slide overview of your application
  • Frameworks, Libraries & 3rd Party Services slide — a one slide that lists frameworks, libraries or services used by the app and mentions what they were used for
  • Backup Demo Slides — in the event that something fails during your live demo, you should have screen captures that are capable of being used as backup

Your demonstration should highlight the key features of your application. You are strongly encouraged to rehearse your demonstration ahead of time.

Demo Information

I will be building and installing all apps into the iPhone Simulator on my laptop for the demonstration. To ensure a smooth demo, I recommend the following…

  • When testing your app, I would strongly suggest that you remove your app from the simulator and try a fresh build & install before submitting to avoid any issues caused by (lack of) residual artifacts.
  • Perform a dry run on the demo hardware — I will be holding special office hours Tuesday, December 14th 5:30–6:30pm where you can stop by and do a dry run on the actual machine that will be used for the demos.

If your app requires features that are not supported on the simulator (such as camera, accelerometer, etc.) email me as soon as possible so we can make the necessary accommodations.

Submission

To submit your slides, open up a terminal, navigate to the directory containing your slides then issue the command:

submit cs491i final-slides slides.pdf

Final Project — Mock App Store Submission

Due Date

Tuesday, December 14th — 11:59pm

Background

If you were publishing an application on the App Store, you would need to provide information about your app for submission. To simulate that experience, you will prepare a mock App Store submission.

For this write up I’ve provided a zip file which you must use as a template for writing up the details of your app. This zipfile includes an HTML file that when viewed in a web browser displays a page similar to that on the App Store.

All mock App Store submissions will be aggregated and posted on the course blog prior to the final presentations.

Zip File Structure

The zip file contains the following directory structure…

appstore/
|-- resources/
|   |-- images/
|   `-- ...
`-- username/
    |-- 1.png
    |-- 2.png
    |-- 3.png
    |-- 4.png
    |-- 5.png
    |-- Icon-175.png
    `-- index.html

You’ll be doing all your work under the username directory (which you’ll rename). The contents of the resources directory are supporting files referenced by the index.html document and should not be edited.

Modifications

You will need perform the following…

  1. Rename the username directory to your myUMBC username. Multi-person teams should hyphenate the names (e.g. user1-user2).
  2. Replace Icon-175.png with a 175px x 175px PNG icon for your app.
  3. Replace [1-5].png with 3-5 screenshots from your application. Screenshots should adhere to the following size constraints…
    • iPhone & iPod touch — 320px x 480px (portrait) or 480px x 320px (landscape)
    • iPad — 360px x 480px (portrait) or 480px x 360px (landscape)
  4. There are several things you need to edit in the index.html file. Each item that needs to be updated has been tagged with a “TODO:” in the comments (use a text editor and search). These include…

    1. Replace “App Name” with the actual name of the app (2 places)
    2. Update “John Doe & Jane Smith” with the actual author(s) (2 places)
    3. Replace the sample description with a description of your app. Do not use any special HTML or emoji within the paragraphs. If your app requires features found on certain devices (i.e. a camera) state so in the description. Do not include testimonials or reviews like you may see in some descriptions.
    4. Update the Website link to your web page (or remove the link)
    5. If you do not include 5 screenshots then remove the links for the extra screenshots (again, you must include between 3–5)
    6. Identify the category that best fits your application — a full list can be found in the comments
    7. Modify the list of devices to reflect the devices your app supports
    8. If your app required iOS 4.1 or iOS 4.2.1, then update the iOS requirements to reflect what is needed

Tips

Submission

Once you’ve made the changes to the provided HTML file and swapped out the sample icon and images with your own package it up by zipping up the entire directory tree.

To submit your mock app store submission, open up a terminal, navigate to your zip file then issue the command:

submit cs491i final-appstore appstore.zip

Final Project — Source Code Submission

Due Date

Monday, December 13th — 11:59pm

Grading Criteria

Grading criteria for the final project will be based on the criteria from the week-long assignments…

  • Correctness of application
  • Appearance of application
  • Adherence to Objective-C and iPhone coding conventions
  • Neatly formatted and indented code
  • Well documented header files
  • Absence of significant performance issues
  • Absence of memory leaks

…as well as…

  • Scope — Is the app sufficiently complex? Does it deliver what was proposed?
  • Polish — How polished is the app? Does it have a launch screen image? Does it have an app icon? Are high-resolution Retina display graphics included? Is the app appropriately named? Is the user experience well thought out?
  • Interesting, novelty and uniqueness — Is the app interesting, or is it just a remake of an already existing app? What’s the overall coolness factor?
  • Required Elements — Does it contain multiple views? Does it persist some form of data?
  • Suggested Elements — Does it contain sound effects? Does it contain animation?

Submission

Like all of the short projects this semester, you will need to submit your source code and necessary resources for grading. You should remove your build directory and zip up the directory containing your Xcode project.

To submit your final project source code, open up a terminal, navigate to your zip file then issue the command:

submit cs491i final-code project.zip

Upgrading to iOS 4.2

With an iOS 4.2 release seemingly eminent, I wanted to again remind everyone the ramifications of upgrading from a development standpoint. Generally if you want to do on-device development, then the iOS version on your device must not be newer than the iOS SDK installed. So, what does this mean?

  • If you have your own Mac, then all this means is that if you update your device, you’ll likely need to update your iOS SDK.
  • However, if you are doing on-device development and are relying on the lab machines to do so, you will not want to apply anything newer than 4.1, as doing so will likely result in the loss of the ability to publish to your device. The lab machines will use the 4.1 SDK for the remainder of the semester.

Rotation Gesture Example

I’ve cleanup up and posted another gesture recognizer example that didn’t make the Advanced Events notes. This example utilizes the UIRotationGestureRecognizer class to observe rotations of an image.

UIRotationGestureRecognizer Example

UIRotationGestureRecognizer Example

You can grab the source code directly below:

Updated Core Animation Easing Function Notes

There was a bug in the TouchMove example from the Core Animation notes that actually caused all animations to use the default easing function. The Core Graphics & Animation notes and TouchMove.zip example have both been updated.

If you’re using the legacy animation methods you’ll want to use the UIViewAnimationCurve constants. If you’re using the newer ObjC 2.0 block-based animation methods you’ll want to use the UIViewAnimationOptions constants.

Unfortunately, even though both of these sets of constants define the same 4 easing functions (linear, ease in, ease out & ease in/out), you’ll have to be conscientiousness of which animation methods you’re using and utilize the correct set of constants.

Vote

Vote

Tuesday is Election Day — be sure to get out and vote.

You can verify your voter information, find your polling place, and view sample ballots at the Center for American Politics and Citizenship. Or, if you’re on a mobile device (e.g. iOS or Android) you can use Google’s Mobile Voting web app to find your polling location. A full list of candidates can be found on your sample ballot, or at the Maryland State Board of Elections 2010 Candidate List.

Co-Create UMBC also reports

If you listed your UMBC campus address as your home address when you registered to vote, your polling station is located on the campus of Catonsville High School. UMBC Transit and the Office of Student Life are sponsoring free shuttle rides on Election Day (Tuesday, November 2nd) between Commons Circle and the Catonsville High polling station from 8:00 a.m. until 7:30 p.m.. The shuttle will stop at Commons Circle every 30 minutes. The last shuttle will depart from Catonsville High at 8:15 p.m. So go vote!

You can track the location of the voting shuttle using the Transit Tracker web site. The route will be called “Catonsville High Voting.”

Core Motion Gyroscope Example

As promised in Tuesday’s class, I’ve posted a gyroscope code example under the Advanced Events lecture (the slides have been left unchanged).

Gyroscope Example

Gyroscope Example

It’s a simple app that utilizes Core Motion to roll an object on screen in the direction that the user is rolling the device. Hold the device upright (in portrait mode) and rotate clockwise/counter-clockwise.

You can grab the source code directly below:

Additional iOS Widgets

Tapku Library

Tapku Library

The open source library I mentioned in class that provides the calendar widget is the Tapku Library. They also add several other widgets…

  • HUD
  • Line graph
  • Enhanced table cells
  • Coverflow
  • and more…

Two other open source libraries worth mentioning…

MBProgressHUD

MBProgressHUD

The MBProgressHUD project provides several HUD configurations.

Three20

Three20

The popular Three20 project also provides many widgets including…

  • In-app photo chooser
  • Simplified tables with in-line controls
  • Various indicators
  • Simulated app launcher
  • Tabs
  • Custom buttons
  • etc…
Follow

Get every new post delivered to your Inbox.