Stanford Continuing Studies
CS47: Beginning iPhone Application Development
Jason Fieldman
jason@fieldman.org

When and Where

Thursdays, 7:00 - 8:50pm
10 weeks, January 14 - March 18
Bldg. Y2E2 - 473 Via Ortega, Room Rm 111 (google map)

Office Hours:
Saturdays 10am-11am, Red Rock Cafe (Yelp Info) - SECOND FLOOR

Class Discussion Group

http://groups.google.com/group/stanfordcs47

Course Description

The iPhone is a fantastic mobile platform to work with, but many developers don’t know where to start. In this course, students will learn the fundamentals of creating and distributing iPhone applications. The course will cover topics such as the Objective-C programming language, using the Xcode development tools, and how to interact with the Cocoa Touch API. By the end of the course, students should expect to be able to create their own iPhone applications and have them published in the iTunes App Store.

Importance of Prerequisites

This class requires that students have a strong object-oriented programming background, and are fluent is either C/C++ or Java.

This course jumps directly into Objective-C programming concepts, and is geared toward seasoned programmers that are confortable coming up to speed in a new language very quickly. Objective-C shares a large amount of syntax with C, so those fluent in C/C++ or Java will be able to pick up the small changes quickly. Those without a C/C++ or Java background will have to spend time outside of class getting up to speed.

Students are also required to have access to a computer running Mac OS X 10.5+ (Leopard or Snow Leopard) on an Intel platform. The iPhone development tools are only available for these operating systems, and are NOT available for Windows PCs. Students taking the class for a grade must be able to write and compile applications for the final project.

Useful Links

This list will continue to grow over time.

http://developer.apple.com/iphone - The official portal for all iPhone development needs. Get Xcode and the iPhone SDK here. I highly recommend reviewing sample code and watching the tutorial videos.

http://devforums.apple.com - The official developer forums. Once you have an ADC account you can use this forum to discuss iPhone topics with other developers.

http://cocoadevcentral.com - Has some really elegant programming tutorials for Mac OS. If you already know C/C++, start out with the "Learn Objective-C" link. There's also an introduction to C ("C Tutorial for Cocoa").

http://code.google.com/p/json-framework/ - A good JSON library for iPhone/Objective-C

FMDB - A good SQLite wrapper for Objective-C; use the svn command on their website to get it

Class Schedule

Week 1; January 14 Class Introduction
Tour of Xcode and the build environment
Objective-C essentials
Hello World

Presentation
Presentation (Black Text on White BG)
Week 2; January 21 Understanding views and view controllers
Getting comfortable with basic UIKit controls

Presentation
Presentation (Black Text on White BG)

Week2_SuperSimpleApp.zip
UICatalog_NoIB_v2.zip
(Unzip to /Developer/Examples/iPhone)
Week 3; January 28 View controller details:
  • UINavigationController
  • UITabBarController
  • Modal view controllers

Presentation
Presentation (Black Text on White BG)

Week3_ControllerExample.zip
Week 4; February 4 Table Views

Presentation
Presentation (Black Text on White BG)
Week 5; February 11 Retrieving information from a remote server
Storing information on the phone

Presentation
Presentation (Black Text on White BG)

Week5_ImageLibrary.zip
Week 6; February 18 Quartz 2D
Animation
Tracking Touches
Class project discussion

Presentation
Presentation (Black Text on White BG)

Week6_QuartzAnimationTouches.zip
Class Project Xcode Files
Week 7; February 25 Introduction to advanced SDKs:
  • Camera and Image Library
  • Accelerometer
  • Location Awareness

Presentation
Presentation (Black Text on White BG)

Week7_CameraLocationAccel.zip
Week 8; March 11 Introduction to advanced SDKs:
  • Notifications
  • Playing sound/music
  • Playing movies

Presentation
Presentation (Black Text on White BG)

Week8_AudioVideo.zip
Week 9; March 18 Discussion of issues raised in project work

SQLite demo: todo.zip
Week9_Miscellaneous.zip
Week 10; March 25
Location TBD
Project presentations
Wrap up

CS47Project.zip