0% found this document useful (0 votes)
55 views

Music Appreciation 243: Introduction To Rick Astley: Evan Doll Edoll@stanford - Edu Alan Cannistraro Accannis@stanford - Edu

This document summarizes an introduction lecture for a course on iPhone application development. It introduces the lecturers and TAs for the course. It outlines the course requirements, including having access to an Intel-based Mac and the iPhone SDK. It describes the first assignment and upcoming assignments building a presence application over 4 weeks. It also discusses final projects and says more information on the course can be found on the course website.

Uploaded by

Avneesh Minocha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

Music Appreciation 243: Introduction To Rick Astley: Evan Doll Edoll@stanford - Edu Alan Cannistraro Accannis@stanford - Edu

This document summarizes an introduction lecture for a course on iPhone application development. It introduces the lecturers and TAs for the course. It outlines the course requirements, including having access to an Intel-based Mac and the iPhone SDK. It describes the first assignment and upcoming assignments building a presence application over 4 weeks. It also discusses final projects and says more information on the course can be found on the course website.

Uploaded by

Avneesh Minocha
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 57

Music Appreciation 243:

Introduction to Rick Astley

Evan Doll [email protected]


Alan Cannistraro [email protected]

Thursday, April 2, 2009


Thursday, April 2, 2009
Welcome to CS193P:
iPhone Application Development

Evan Doll [email protected]


Alan Cannistraro [email protected]

Thursday, April 2, 2009


Staff
• Lecturers
■ Evan Doll [email protected]
■ Alan Cannistraro [email protected]

• Student TAs
■ Troy Brant [email protected]
■ Paul Salzman [email protected]

• “Professor Emeritus”
■ Paul Marcos [email protected]

Thursday, April 2, 2009


How many of you...
• Are familiar with object-oriented programming?
• Have developed software with Mac OS X?
• Have developed apps for the iPhone?

Thursday, April 2, 2009


Lectures, Sections, Office Hours
• Lectures
■ 320-105, Monday & Wednesday 3:15 – 4:30 PM
• Optional Section
■ 200-205, Friday 3:15 – 4:05 PM as announced
■ Guest speakers, additional topics

■ First one will be next Friday 4/10

• Office Hours
■ Troy and Paul will be holding office hours
■ Time & location TBD, check website for details

Thursday, April 2, 2009


Requirements
• Prerequisite: CS 106B/X
• Recommended Book: None, we’ll use Apple documentation
• You must have access to an Intel-based Macintosh
■ Running Mac OS X 10.5 Leopard
■ iPhone SDK (Not available on cluster computers!)

• Owning an iPhone or iPod Touch is not required


■ Assignments may be done with the iPhone Simulator
■ Loaner iPod Touches should be available, more details to come

Thursday, April 2, 2009


Enrollment
• Response has been phenomenal again this quarter!
■ Enrollment limited to 60 students
■ 40 graded, 20 Pass/No Credit

■ Being signed up on Axess does not mean you’re enrolled

• You MUST fill out a survey to be considered!


■ http://tinyurl.com/cs193p-spring09-survey
■ Required by noon tomorrow (April 2)

■ Indicate whether you’re willing to enroll P/NC

• Enrollment will be determined based on prior CS courses, other


relevant experience, number of quarters remaining, major
• Non-enrolled may still attend lectures as auditors

Thursday, April 2, 2009


iPhone Developer University Program
• Stanford has joined the iPhone Developer University Program
• Free on-device development for students (normally $99)
■ Valid through the end of the quarter
■ Invites will only be issued to @stanford.edu email addresses

• You’ll need to click through a “student agreement” which you


should read

Thursday, April 2, 2009


iPhone OS 3.0 Beta
• We won’t be discussing the upcoming iPhone OS 3.0
■ Currently covered by an NDA
• Superset of iPhone OS 2.0 from a developer perspective
• Everything you’ll be learning this quarter will still be useful!

Thursday, April 2, 2009


Expanding our classroom...
CS193P will be available on iTunes U this quarter

Thursday, April 2, 2009


CS193P on iTunes U
• For enrolled students at Stanford...
■ Your voice may be recorded
■ Not a substitute for attending lectures

■ There will be a delay of a few days before availability

Thursday, April 2, 2009


CS193P on iTunes U
• For viewers on iTunes U...
■ Welcome to Stanford!
■ Feedback and suggestions are welcome

■ We can’t answer individual questions via email

■ Visit http://devforums.apple.com

Thursday, April 2, 2009


Getting More Info
• Email
[email protected]
■ Questions from enrolled students only, please!

• Course web site


■ http://cs193p.stanford.edu
• Other web sites
■ iPhone Dev Center: http://developer.apple.com/iphone
■ Developer Forums: http://devforums.apple.com

Thursday, April 2, 2009


Why Are We Here?

Thursday, April 2, 2009


Why Are We Here?

To build iPhone & iPod touch applications


using Cocoa Touch

Thursday, April 2, 2009


Why Are We Here?
• CS193P is not just about the iPhone, Cocoa Touch or ObjC
• It’s about real-world software engineering, as well as object
oriented architecture and design
• Exposure to problems and solutions that you might not see in
other classes

Thursday, April 2, 2009


Cocoa Touch & iPhone SDK
• Based on Cocoa
■ Mature, polished, highly consistent APIs
• Provides a very rich starting point for exploring app design
• Shows “real-world” implementations of OO design patterns
• Designs learned on iPhone translate directly to Mac OS X

Thursday, April 2, 2009


What We’ll Cover This Quarter

Thursday, April 2, 2009


Tools
Xcode Interface Builder

Frameworks
Foundation UIKit

Language [textView setStringValue: @“Hello”];


(& Runtime)
Objective-C

Thursday, April 2, 2009


Why Objective-C?
• Exposure to other languages is always good
• ObjC is a language focused on simplicity and the elegance of
object oriented design
■ Based on ANSI C
■ Brings many object oriented principles, but with a minimal

amount of syntax
• A data point to compare with designs of C, C++, Java and
other languages

Thursday, April 2, 2009


Applications You Will Build

HelloStanford & Obj-C Tool

HelloPoly - 2 weeks

Presence - 4 weeks

Final Project (your choice) - 3 weeks

Thursday, April 2, 2009


Assignments, Grading & Late Policy
• 7 weekly assignments
• Final project of your choice
■ End of quarter demos at Apple...
• Grading: Nice & simple: ✓, ✓+ and ✓-
• Late Policy: 3 late days, use them wisely!

Thursday, April 2, 2009


First Assignment
• First assignment handed out today, in two parts
• Intended to get you situated with tools and start off with Obj-C
• Includes a comprehensive walkthrough
• We suggest trying to do the first half before Monday to help
work out any tools or installation issues
• Due on Thursday 4/9

Thursday, April 2, 2009


Presence
• The “Hello World” of iPhone applications...
■ A client
• Build a fully functional application from scratch over 4 weeks
• Each assignment builds on the previous one

Thursday, April 2, 2009


Presence

Thursday, April 2, 2009


What We’ll Cover
• Application design patterns
• View controllers
• Displaying data
■ Table views
• Dealing with local & remote data
■ Property lists, SQLite, web services
• Text input
• Multithreading
• Address Book and other system integration

Thursday, April 2, 2009


Final Projects
• Last 3 weeks of the course
• By yourself or with a partner
• It’s never too early to think of something and propose it to us
• Categories to consider:
■ Student life apps
■ Educational tools

■ Games

■ Social / location-aware software

• Something that you or your friends would actually like to use!


• Post it on the app store?
■ http://www.stanfordiphoneclassapps.com

Thursday, April 2, 2009


Questions?

Thursday, April 2, 2009


iPhone OS Overview

Thursday, April 2, 2009


iPhone

Thursday, April 2, 2009


Mac OS X

Thursday, April 2, 2009


Mac OS X

Cocoa

Media

Core Services

Core OS

Thursday, April 2, 2009


Cocoa

Media

Core Services

Core OS

Thursday, April 2, 2009


Cocoa Touch

Media

Core Services

Core OS

Thursday, April 2, 2009


iPhone OS
Cocoa Touch

Media

Core Services

Core OS

Thursday, April 2, 2009


iPhone OS Core OS
Cocoa Touch OS X Kernel Power Mgmt
Mach 3.0 Keychain
Media
BSD Certificates
Core Services Sockets File System
Core OS Security Bonjour

Thursday, April 2, 2009


iPhone OS Core Services
Cocoa Touch Collections Core Location
Address Book Net Services
Media
Networking Threading
Core Services File Access Preferences
Core OS SQLite URL utilities

Thursday, April 2, 2009


iPhone OS Media
Cocoa Touch Core Audio JPG, PNG, TIFF
OpenAL PDF
Media
Audio Mixing Quartz (2D)
Core Services Audio Recording Core Animation
Core OS Video Playback OpenGL ES

Thursday, April 2, 2009


iPhone OS Cocoa Touch
Cocoa Touch Multi-Touch Events Alerts
Multi-Touch Controls Web Views
Media
Accelerometer People Picker
Core Services View Hierarchy Image Picker
Core OS Localization Controllers

Thursday, April 2, 2009


iPhone OS
Cocoa Touch

Media

Core Services

Core OS

Thursday, April 2, 2009


Tools
Xcode Interface Builder

Frameworks
Foundation UIKit

Language [textView setStringValue: @“Hello”];


(& Runtime)
Objective-C

Thursday, April 2, 2009


Cocoa Touch Architecture

Cocoa Touch

UIKit User interface elements


Application runtime
Event handling
Hardware APIs

Foundation Utility classes


Collection classes
Object wrappers for system services
Subset of Foundation in Cocoa

Thursday, April 2, 2009


Objects

Thursday, April 2, 2009


Object

Thing

Thursday, April 2, 2009


Behavior

Thing

behavior doSomething

Thursday, April 2, 2009


Message

Thing

"doSomething"

doSomething

Thursday, April 2, 2009


State

Thing
flag
state count

behavior doSomething

Thursday, April 2, 2009


Other Objects As State

Thing
flag
state count

behavior doSomething

Thursday, April 2, 2009


Other Objects As State

Thing
flag
state count

behavior doSomething
doSomethingElse

Thursday, April 2, 2009


Other Objects As State

Thing
flag
state count
helper

behavior doSomething
doSomethingElse

Thursday, April 2, 2009


Other Objects As State

Other Thing

Thing
flag performDifficultTask
state count
helper

behavior doSomething
doSomethingElse

Thursday, April 2, 2009


Outlets Need to decide what the
demo would be and update
slide to appropriate
material.

- text field / slider?

- color tabs?

Controller
slider
label

updateLabel

Thursday, April 2, 2009


Target / Action

Controller
target
slider action ʻupdateLabelʼ
label

updateLabel

Thursday, April 2, 2009


Demo

Thursday, April 2, 2009


What did we just see?
• Keep application logic separate from interface elements
• Outlets connect controllers to views
• Use target/action to customize behavior
■ Don’t require subclassing

Thursday, April 2, 2009


Questions?

Thursday, April 2, 2009

You might also like