22C:196, App Development for iOS/iPhone/iPad
Spring 2014, The University of Iowa
Jim Cremer, 101P MLH, firstname.lastname@example.org, 319-321-1893, Office hours: MW 9-10am and by appt
TA: Hao Zheng, 201G MLH, email@example.com, Office hours: M 1-2pm, Th 11am-noon, F 1-2pm
Class meeting times/locations:
Section 001: TTh 2:00-3:15pm, 3315 SC
Section 005: TTh 12:30-1:45, 118 MLH
Google Sites website for this course
A companion Google Sites website, uiiosspring14 will be used for two things: 1) documenting group project work, and 2) a portal for the Google Groups discussion forum for the class. It also will have photos/information about all participants.
- 4/26/14 The project-related-homework-assignments page has been updated to cover the remainder of the semester (HW P5 through HW P11).
- 3/5/14 Homework 5 is available. Due Mar. 14 at 11:59pm.
- 3/4/14 Code from Lecture 13 (3/4) is available.
- 2/27/14 Code from Lecture 12 (2/27) is available.
- 2/20/14 Code from Lecture 10 (2/20) is available.
- 2/20/14 Project-related homework assignments HW P1, P2, P3, and P4 have been posted on the course Google Site. (Due dates, Feb. 28, Mar. 7, Mar. 11/13, Mar. 25/27)
- 2/18/14 Homework 4 is available. Due Feb. 27 at noon.
- 2/18/14 Code from Lecture 9 (2/18) is available.
- 2/13/14 Code from Lecture 8 (2/13) is available.
- 2/11/14 Code from Lecture 7 (2/11) is available.
- 2/6/14 Homework 3 is available. Due Feb. 17 at noon.
- 1/30/14 Code from Lecture 4 (1/30) is available.
- 1/27/14 Homework 2 is available. Due Feb. 3.
- 1/24/14 Homework 1 is available. Due Jan. 29.
22c21 and 22c22, or 22c80, or permission of instructor.
This will not be a regular lecture/homework course. I will give several
weeks (6-7) of lecture classes and homework assignments to get everyone to a
common point in basic iOS programming.
After that, most of the work will be team-based app design
and development. Teams will be aspect where teams have to come up with a project idea, specify and
design it, schedule, implement and present it. Most of the class will be spent working on the group
projects; teams will have either two or three students (proposals for individual projects and
four-person teams will be considered for special circumstances). There will be no tests - grades will be
based on the basic homework assignments (from the first few weeks) plus the design, small progress reports, presentations and result of the group projects.
Again, there won't be a lot of regular lecture-style teaching - a bit at the beginning of the semester
but much less as the course proceeds. I am not a true expert in iOS. I have developed or been part of several
deployed apps but none of them have been super sophisticated.
People usually find the course fun and interesting, but it depends
on the interest and willingness of people to do significant learning on their own or with their peers.
Usually, students who put in a good effort enjoy
it and learn valuable things - not just iOS development, but also things about design, working in teams,
realistic goals and planning, etc.
The scheduled final exam times will be used for some groups' project presentations:
Section 1 time: Mon., 5/12, 7:30-9:30am
Section 5 time: Tue., 5/13, 7:30-9:30am
Plus/Minus grading will be used for the course.
Approximately: Homework: 40%, project 60% (consisting of many smaller components - design, status updates, presentations, results, report, etc.)
There will be no exams.
Late submissions will not be accepted. Except in special circumstances you
will be better
off turning in what you have on time rather than seeking extra time to
complete your work.
Starting early is important, especially for programing assignments.
No textbook required.
Newest edition of Stanford iOS course:
Primary recommended free e-books
Recommended Apple online resources on iOS development:
- "Developing iOS 7 Apps for iPad and iPhone" by Daniel Steinberg, that closely matches the Fall 2013 iOS7-based Stanford class. This is an iBooks-only item (i.e. works only on iBooks on iOS devices and Macs (with Mavericks)
- "iPad and iPhone App Development," by Daniel Steinberg. This is the previous version of the book above. It was based on the Fall 2012 Stanford class and uses iOS6 instead of iOS7. For most things, it is still quite useful.
Other ecommended books/websites (this links here are maybe a bit out of date - not updated for iOS6 but you can probably find updated info at the sites by following these links)
- iOS Dev Center on Apple Developer site.
There are several excellent guides on the Developer site. These are some especially good ones for beginners:
- Start Developing iOS Apps Today, a "road map" for getting started quickly, including how to get and setup the necessary tools, how to create your first app, and so on.
- Programming with Objective-C, an introduction to the language used for iOS programming (presumes you are familiar with C).
- Concepts in Objective-C Programming (pdf document). To me, this isn't really an Objective-C introduction. It's an overview of the main concepts and design patterns used in Cocoa Touch (iOS) and Cocoa (Mac), and how those related to Objective-C.
- iOS Human Interface Guidelines, good and very detailed guide to human interface style guidelines (and rules, if you want to get apps accepted in the store!).
- iOS App Programming Guide, more advanced information on iOS programming.
On design/user interface (not programming)
- raywenderlich.com is a site with a great deal of iOS programming tutorials. My sense is that a lot of people think site has very good information. The site also sells a downloadable PDF "book" (more than 1500 pages long!) containing all the tutorials.
- iOS Programming: The Big Nerd Ranch Guide, 4th edition. This book is scheduled to be published on Feb. 20, 2014. I have only read parts of the previous edition but
have heard that many people think Big Nerd Ranch puts out some of the best iOS books and courses.
- Another book, iOS Storyboards by Daniel Steinberg (author of the free books that go with the Stanford course) focusing on iOS storyboards. This one is not free.
- Code from Lecture 13: SimpleDynamicBehavior1.zip
(simple use of UIGravityBehavior, UICollisionBehavior, etc. Much of the code is initially
commented-out. Read the comments and uncomment relevant sections of code step by step.),
SimpleDynamicBehavior2.zip (simple example creating
views in code for multiobject collision), SimpleViewAnimation.zip (minimal example of UIView animation), TappyBasics.zip (contains things that could be considered foundation for a Flappy Bird-like game. Demonstrates a custom UIBehavior class, gestures affecting dynamic objects, use of collision behavior delegate, etc.
- Code from Lecture 12 (started in Lecture 11), Feb. 27: SimpleGraphicsAndGestures.zip (basic custom UIViews and use of UIBezierPaths, plus simple pan, pinch, and double-tap gestures).
- Modified/enhanced version of code from Lecture 10, Feb. 20: SimpleTextAndNSUV.zip. Expands Lec. 9's SimpleText to demonstrate use of NSUserDefaults. Also: SimpleNavWithSingleton (shows definition and use of singleton class, though it doesn't do anything meaningful in the app), SimpleScrollView.zip (simple demo of single scrollable/zoomable image).
- Code from Lecture 9, Feb. 18: SimpleTV.zip (simple table view and web views) and SimpleText.zip (simple text field and keyboard handling).
- Code from Lecture 8, Feb. 13: SimpleNav.zip and SimpleTab.zip (zipped project folders).
- Code from Lecture 7, Feb. 11: BasicSegues.zip (zipped project folder).
- Code from Lecture 4, Jan. 30: CardGameStart.zip (zipped project folder).
- Homework 1, due Wed., Jan. 29, by 5:00pm
- Homework 2, due Mon., Feb. 3, by 11:59pm
- Homework 3, due Mon., Feb. 17, by noon.
- Homework 4, due Thurs., Feb. 27, by noon.
- Project-related homework assignments HW P1, P2, P3, and P4 have been posted on the course Google Site. (Due dates, Feb. 28, Mar. 7, Mar. 11/13, Mar. 25/27)
- Homework 5, due Fri., Mar. 14, by 11:59pm.
- Project-related homework assignments HW P5 through P11 have been updated on the course Google Site.
Computers (and iOS devices) available
You will need access to a Mac (or a "Hackintosh") for this course.
A few Macs are available in 301MLH.
A small number of Macs will be available to be checked out (for the entire semester) for use in the course.
We will probably allocate them via a "lottery."
Several iOS devices (including iPads, iPad Minis, iPhone 4s, iPhone 5s)
are also available to be checked out for testing apps during development.
For certain homework assignments, you must submit via the appropriate ICON dropbox. First, create a zip file of the folder containing your homework XCode project. Then, upload just that
zip file to the ICON dropbox.
Scores will be available on ICON only.
Documenting and submitting programs