CS4962 - Mobile Application Programming: iOS
Instructor: Matt Stoker
Instructor Office Hours: TBA
Teaching Assistant Section 001: Len Duel
Teaching Assistant Section 001 Hours: MW 3:00pm-6:30pm in M LI 1120, TH 12:30pm-1:50pm in Union Mac Lab, TH 3:40pm-5:30pm in M LI 1120, F 3:30pm-5:30pm in M LI 1120
Teaching Assistant Section 002: Andres Monroy
Teaching Assistant Section 002 Hours: By appointment
Administrative: matt.stoker at gmail.com (please mail homework questions to the section TA)
Class TA Section 001: lendeuel at me.com
Class TA Section 002: andresf.mon at gmail.com
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 iOS platform offers a great introduction to mobile programming because it offers the full-featured Mac OS X programming interfaces, while the hardware possesses 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 Swift language and runtime, cover bedrock Mac OS X development frameworks, explore the iOS 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 Swift or Cocoa programming experience is required.
60% - Programming Homework
5% - Written Assignments
35% - Final Project
Each student receives 5 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, iOS 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.