The updated course materials can be found at: cs491f10.wordpress.com
The updated course materials can be found at: cs491f10.wordpress.com
Due Date (for Slide Submission)
Wednesday, December 16th — 11:59pm
Background
Final project presentations and live demonstrations will occur during the time allotted for the final exam (Thursday, December 17th 6–8pm). Each group will be scheduled a 4 minute chunk of time for their presentation and demonstration. This 4 minute 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…
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…
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
Due Date
Tuesday, December 15th — 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.
Specifically you must edit the following in index.html:
All “Mock App Store” submissions will be aggregated and posted on the course blog prior to the final presentations.
To get a feel for the content provided in app descriptions, I encourage you to take a look at apps that are on the store. Some of the more popular apps that I feel have pretty good descriptions are included below:
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.
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
Due Date
Monday, December 14th — 11:59pm
Grading Criteria
Grading criteria for the final project will be based on the criteria from the week-long assignments…
…as well as…
Submission
Like all of the week-long 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
I’ve had several people email me with issues redrawing the board on touch events. Since this seems to be a semi-common problem, I thought I’d take a moment to address it here.
The problem is likely caused by not all of the draw code being executed. If you take a look at the GLView class’s drawView method, you’ll see that there’s some code before and after the call to the delegate’s (the view controller) drawView: method. It is this code that actually does the screen refresh.
- (void)drawView { glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); [delegate drawView:self]; glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); [context presentRenderbuffer:GL_RENDERBUFFER_OES]; }
So, by simply calling the view controller’s drawView: method the screen refresh doesn’t happen. To ensure this code gets called, instead of invoking the view controller’s drawRect: method simply invoke the GLView’s (the view controllers view property) drawRect method like so…
[(GLView *)self.view drawView];
I was recently contacted by Mindgrub Technologies about several iPhone (and BlackBerry) development internship positions they have available. They’re looking for 3-5 students for 2-3 day a week part-time positions. Additional details below…
Mindgrub seeks Computer Science students proficient in C/C++ or Java to help with developing iPhone and Blackberry Apps for various client projects. Candidates should be able to work independently and as part of a team. Object oriented programming and flexibility to move from project to project as needed a major plus!! Other skills such as JavaScript and CSS know-how also a plus, but not a must.
You can get additional information about Mindgrub on their website at: mindgrub.com.
Email résumés to jobs@mindgrub.com for consideration.
I thought I’d take a moment to post about a problem a couple of people have been having. If you’re getting the following error, it is probably the result of not having added the MapKit framework…
*** Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MKMapView)’
Under Xcode 3.2 (the screenshots in the notes) MapKit is pre-populated in the Add → Existing Frameworks… dialog and simply requires selecting MapKit from the list. However under Xcode 3.1 you have to do a bit more work. Follow the steps below for adding MapKit to your project if you haven’t done so already…
1) Open Finder and browse to /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/Frameworks as shown below (you may need to adjust the path a little if using a SDK newer than 3.0 with Xcode 3.1)…
2) Select the MapKit.framework fold and drag-and-drop it into the root of your Xcode project as shown below…
3) You should uncheck the box that states “Copy items into destination group’s folder (if needed)”, and press Add…
4) The MapKit framework should now appear under your project with the rest of the frameworks and your app should now contain the necessary MapKit libraries to run.
WordPress just updated their site such that if you visit the site from an iPhone you are automatically presented with an iPhone friendly version of the page. So, if you visit the course pages on your iPhone you should now see something like this…
They are even serving the HTML correctly such that you can add it to the home screen with an icon like so…
New and improved! Now with less profanity!

The word lists provided for assignment 5 have been updated. The original lists (derived from the 12Dicts open source project) contained a number of dirty, profane and offensive words. I’ve run the lists through a basic dirty word list (care of the open source WordPress Polite-ifier Plugin project) and have updated them with the cleaned up versions.

Overview
In order to install and run your own apps on your iPhone or iPod touch a couple of things need to happen — namely both you and your device must be added to the university program.
In order for you to sign applications you must obtain a digital certificate. This process is roughly as follows…
In order to install your signed app to an iPhone or iPod touch, it must be added to a provisioning profile which identifies who can publish to what devices. This process is roughly as follows…
Once you’ve installed your certificate and provisioning profile, you can build and publish applications to your iPhone or iPod touch.
Requesting an Invite
If you would like to do on-device development on your iPhone or iPod touch, you must send me an email with the following information:
When I get your request I’ll send you an invite. Once you get this invite, you’ll be able to log into the portal and submit your certificate signing request.
Once you submit your certificate signing request to the portal I’ll be automatically notified. When I get this notification, I’ll add your device to the list and approve your certificate request. You will automatically get an email once the approval happens. You will then be able to log back into the portal and download your certificate and the provisioning profile.
Email Address Considerations
I’d strongly recommend that you use your UMBC email address and not a personal email address. If you think that you’ll ever want to sign up as a regular developer and submit apps to the store, I’d recommend that you keep that separate and re-enroll to the Apple Developer Connection with a UMBC specific identity.
Finding your Unique Device Identifier (UDID)
To find out your device’s UDID, simply connect your device to your Mac and then open Xcode (if you connect while Xcode is open, it may not see the device). In Xcode, select “Organizer” from the “Window” menu option. Once the window opens, select your device under the DEVICES category on the sidebar. The 40 character string in the Identifier field is your device’s UDID. I strongly recommend that you copy and paste this into your email.
A Note About Keys
Whether you are working in the labs or not, I strongly recommend that you export your keys and certificate and save them to some other media (such as within your home directory on AFS or a thumb drive).
Expiration
The development provisioning profile is currently valid through December 24th 2009.
Unfortunately, due to legal issues it appears that we will be unable to issue distribution profiles, so once the development provisioning profile expires your apps will cease to launch. If you wish to distribute an app beyond the scope and duration of this class, you’ll need to register as a paid developer.
More Information
For more information see the following: