CS4962 - Mobile Application Programming: iPhone
Instructor: Matt Stoker
Instructor Mentor: Peter Jensen
Instructor Office Hours: Tuesday and Thursday 5:00PM to 6:00PM in M LI 1120, or by appointment
Teaching Assistant: Andrew Cobb
Teaching Assistant Hours: Friday 3:00PM to 6:00PM in M LI 1110
Mailing List: firstname.lastname@example.org
Writing programs for mobile devices presents unique challenges. For example, desktop developers don't often have to ask the question, "How can I design this subsystem to be more power efficient?" The Apple iPhone OS platform offers a great introduction to mobile programming because it offers the full-featured Mac OS X programming interfaces, while possessing limited screen, input, and memory resources. Many of the platform's exciting unique features, such as ubiquitous GPS, built-in accelerometer, and hardware-accelerated OpenGL ES, will also be covered in the course.
The Microsoft Windows and traditional UNIX environments are already widely covered in university curricula. Apple's outlook on hardware and software is unique, so a study of their methods adds dimension to one's understanding of operating system and platform interaction. This course provides a perspective on Apple's methodology through the Apple iPhone and associated SDKs.
This course will teach the Objective-C language and runtime, cover bedrock Mac OS X development frameworks, explore the iPhone SDK, experiment with RESTful web service interaction, and explain methods for organizing projects in such a way that they are highly scalable and maintainable. The 3D mobile graphics library OpenGL ES will also be introduced.
Programming homework assignments will be used to solidify knowledge of the material. A small number of written assignments will be used where appropriate to ensure knowledge of background material. A large final project, chosen from a standard set of projects or an approved project of your own design, will be the culminating focus of the course.
Thorough understanding of object-oriented programming and basic data structures will be assumed and required (CS1410 & CS2420). Familiarity with C or C++ is strongly encouraged (CS 3500). No previous Objective-C or Cocoa programming experience is required.
60% - Programming Homework
10% - Written Assignments
30% - Final Project
Each student receives 2 days of late time to distribute across all of the assignments in the semester, in 1 day increments, to handle unforeseen difficulties. Please alert the teaching staff in the case of extreme difficulties such as injury.
None. We will use the extensive programming guides provided by Apple Inc. as reference material. Class slides will also be made available online. The slides will only introduce material, so ensure you take your own notes to go along with them.
Cooperation among students to better understand course material is highly encouraged, as it is an effective learning tool and essential to real-world development team success. High-level discussion of programming techniques and problem solutions is the best way to help or be helped by your fellow students.
Cheating in the context of this course is generally, but not limited to, sharing and copying of code from other students or the Internet. Any code making up your solution should be written and understood by you. Small quantities of template code, such as that provided by Apple in the Xcode project templates, is acceptable. You should still be able to fully explain the function of any and all template code you use. Refer to, but do not copy code from, iPhone SDK examples.
The University of Utah is extremely strict in it's cheating policies. We will be cross checking your code submissions. Any student caught cheating will automatically be given an E in the course and reported to the University Student Behavior Committee.
Students With Disabilities
The University of Utah seeks to provide equal access to its programs, services, and activities for people with disabilities. Accommodations will gladly be provided for the known disabilities of students in the class. If you will need accommodations during this course, reasonable prior notice needs to be given to the Center for Disability Services, 162 Olpin Union Building, 581-5020 (Voice and TDD). CDS will work with you and the instructor to make arrangements for accommodations.
All written information in this course can be made available in alternative format with prior notification to the Center for Disability Services.