SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
Welcome to CS193P
           iPhone Application Development

           Alan Cannistraro
           accannis@stanford.edu

           Josh Shaffer
           joshh@stanford.edu




Tuesday, January 5, 2010                    1
Introductions

        • Lecturers
            ■ Alan Cannistraro <accannis@stanford.edu>
            ■ Josh Shaffer <joshh@stanford.edu>


        • Student TAs
            ■ Paul Salzman <paulsalz@stanford.edu>
            ■ David Jacobs <dejacobs@stanford.edu>


        • Grand-Master Chief
            ■   Paul Marcos <pmarcos@apple.com>




Tuesday, January 5, 2010                                 2
Quick Survey




Tuesday, January 5, 2010   3
Quick Survey
                    • Have worked with Object Oriented Programming??




Tuesday, January 5, 2010                                               3
Quick Survey
                    • Have worked with Object Oriented Programming??
                    • Have developed apps for Mac OS X?




Tuesday, January 5, 2010                                               3
Quick Survey
                    • Have worked with Object Oriented Programming??
                    • Have developed apps for Mac OS X?
                    • Have installed the iPhone SDK and done iPhone
                       development?




Tuesday, January 5, 2010                                               3
Quick Survey
                    • Have worked with Object Oriented Programming??
                    • Have developed apps for Mac OS X?
                    • Have installed the iPhone SDK and done iPhone
                      development?
                    • Have submitted apps to the App Store?




Tuesday, January 5, 2010                                               3
Logistics




Tuesday, January 5, 2010   4
Logistics
        • Lectures:
            ■ Education 128
            ■ Tuesday & Thursday 4:15 - 5:30 PM




Tuesday, January 5, 2010                          4
Logistics
        • Lectures:
            ■ Education 128
            ■ Tuesday & Thursday 4:15 - 5:30 PM




        • Optional Section
            ■ Room & Time - TBD
            ■ Guest speakers & hot topics




Tuesday, January 5, 2010                          4
Logistics
        • Lectures:
            ■ Education 128
            ■ Tuesday & Thursday 4:15 - 5:30 PM




        • Optional Section
            ■ Room & Time - TBD
            ■ Guest speakers & hot topics




        • Office Hours
            ■ Paul & David will hold office hours
            ■ See website for details




Tuesday, January 5, 2010                            4
Requirements
        • Prerequisite: CS 106B/X

        • Recommended Book: None! We’ll use Apple documentation

        • Required Hardware & Software:
            ■ Intel-based Macintosh, running Mac OS X 10.5 Leopard
            ■ iPhone SDK (not currently available on cluster computers)




        • iPhone or iPod touch is not required
            ■ Assignments may be completed using the iPhone Simulator
            ■ Loaner iPod touches will be available




Tuesday, January 5, 2010                                                  5
Enrollment




Tuesday, January 5, 2010   6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




Tuesday, January 5, 2010                          6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




Tuesday, January 5, 2010                          6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




        • You MUST fill out a survey to be considered
            ■ http://tinyurl.com/cs193p-2010
            ■ Need to be completed by noon tomorrow (1/6)




Tuesday, January 5, 2010                                    6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




        • You MUST fill out a survey to be considered
            ■ http://tinyurl.com/cs193p-2010
            ■ Need to be completed by noon tomorrow (1/6)




Tuesday, January 5, 2010                                    6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




        • You MUST fill out a survey to be considered
            ■ http://tinyurl.com/cs193p-2010
            ■ Need to be completed by noon tomorrow (1/6)




        • Enrollment will be determined based on prior CS courses, other
          relevant experience, number of quarters remaining, major




Tuesday, January 5, 2010                                                   6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




        • You MUST fill out a survey to be considered
            ■ http://tinyurl.com/cs193p-2010
            ■ Need to be completed by noon tomorrow (1/6)




        • Enrollment will be determined based on prior CS courses, other
          relevant experience, number of quarters remaining, major




Tuesday, January 5, 2010                                                   6
Enrollment
        • Response has been phenomenal (again)!
            ■ Enrollment limited to 60 students
            ■ 40 Graded, 20 Pass/No Credit




        • You MUST fill out a survey to be considered
            ■ http://tinyurl.com/cs193p-2010
            ■ Need to be completed by noon tomorrow (1/6)




        • Enrollment will be determined based on prior CS courses, other
          relevant experience, number of quarters remaining, major

        • Auditors welcome!

Tuesday, January 5, 2010                                                   6
iPhone Developer University Program
        • Stanford is part of the iPhone Developer University Program
            ■   Do not sign up for this!


        • Free on-device development for students (save $99!)
            ■ Valid through the end of the quarter
            ■ Invites will be issued to your @stanford.edu email address

            ■ Read through a Student Agreement to get started




Tuesday, January 5, 2010                                                   7
Available on iTunes U




Tuesday, January 5, 2010                           8
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 lectures and materials

              are available




Tuesday, January 5, 2010                                                          9
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

            ■ Download materials now, if you want them later!




Tuesday, January 5, 2010                                        10
Communication and Materials
        • Email
            ■ cs193p@cs.stanford.edu
            ■ Questions from enrolled students only, please!




        • Course web site
            ■   http://cs193p.stanford.edu


        • Other web sites
                 ■ Apple Dev Center: http://developer.apple.com
                 ■ Developer Forums: http://devforums.apple.com

                 ■ External resources:

                    ■ http://cs193p.com

                     ■   http://groups.google.com/group/iphone-appdev-auditors/

Tuesday, January 5, 2010                                                          11
Communication and Materials
        • Auditors
            ■ cs193p-auditors@lists.stanford.edu
            ■ Self-add email list

            ■ Low volume, but allows us to communicate with all folks

              following along
            ■ To sign up, go to:

                 ■ http://lists.stanford.edu
                 ■ https://mailman.stanford.edu/mailman/listinfo/cs193p-auditors




Tuesday, January 5, 2010                                                           12
Why Are We Here?




                   To build iPhone & iPod touch applications
                               using Cocoa Touch


Tuesday, January 5, 2010                                       13
Why Are We Here?
       • CS193P is not just about the iPhone, Cocoa Touch or ObjC

       • It’s about Software Engineering, as well as object oriented
         architecture and design

       • Exposure to problems and solutions that you might not see in
         other classes




Tuesday, January 5, 2010                                                14
Cocoa Touch & iPhone SDK




Tuesday, January 5, 2010           15
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




Tuesday, January 5, 2010                                                 15
Things We’ll Cover




Tuesday, January 5, 2010     16
Tools




      Frameworks




      Language
      (& Runtime)



Tuesday, January 5, 2010   17
Tools
                           Xcode   Interface Builder



      Frameworks




      Language
      (& Runtime)



Tuesday, January 5, 2010                               17
Tools
                             Xcode      Interface Builder



      Frameworks
                           Foundation         UIKit


      Language
      (& Runtime)



Tuesday, January 5, 2010                                    17
Tools
                               Xcode         Interface Builder



      Frameworks
                             Foundation              UIKit


      Language             [textView setStringValue: @“Hello”];
      (& Runtime)
                                       Objective-C



Tuesday, January 5, 2010                                          17
Why Objective-C?
        • Exposure to other languages is always good
        • ObjC is a language focused on simplicity and the elegance of
          OO 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++ and Java




Tuesday, January 5, 2010                                                   18
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!




Tuesday, January 5, 2010                               19
Applications You Will Build


                                HelloStanford & Obj-C Tool


                                HelloPoly - 2 weeks


                                Paparazzi - 4 weeks


                                Final Project (your choice) - 3 weeks



Tuesday, January 5, 2010                                                20
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 Thursday to help
          work out any tools or installation issues
        • Due on Jan 13 (next Wednesday)




Tuesday, January 5, 2010                                                     21
Paparazzi
        • Build a fully functional application from scratch over 4 weeks

        • Access photos on

        • Each assignment builds on the previous one
            ■   Don’t fall behind!


        • Covers a wide variety of topics in the UIKit framework...




Tuesday, January 5, 2010                                                   22
What We’ll Cover
        • Application design patterns
        • View controllers
        • Presenting data
            ■   Table views
        • Loading & saving data
            ■   Property lists, Core Data, web services
        • Text input
        • Threading and Performance
        • Address Book and other system integration
        • iPhone SDK 3.0 stuff!
            ■   MapKit, Video & Photo APIs, & more



Tuesday, January 5, 2010                                  23
Final Projects
        • 3 weeks to work on them
        • 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


        • Find a project that you or your friends would actually like to
          use!
        • Post it on the app store?
        • http://www.stanfordiphoneclassapps.com

Tuesday, January 5, 2010                                                    24
Questions?




Tuesday, January 5, 2010   25
iPhone OS Overview




Tuesday, January 5, 2010     26
iPhone




Tuesday, January 5, 2010            27
Mac OS X




Tuesday, January 5, 2010              27
Mac OS X

                              Cocoa

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   27
Cocoa

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   27
Cocoa Touch

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   27
iPhone OS
                           Cocoa Touch

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   27
iPhone OS
                           Cocoa Touch

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   28
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




Tuesday, January 5, 2010                                      28
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




Tuesday, January 5, 2010                                         28
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




Tuesday, January 5, 2010                                           28
iPhone OS     Cocoa Touch
                  Cocoa Touch    Multi-Touch Events   Alerts
                                 Multi-Touch Controls Web View
                       Media
                                 Accelerometer        People Picker
                 Core Services   View Hierarchy       Image Picker
                      Core OS    Localization         Camera




Tuesday, January 5, 2010                                             28
iPhone OS
                           Cocoa Touch

                              Media

                           Core Services

                             Core OS




Tuesday, January 5, 2010                   28
Tools
                               Xcode         Interface Builder



      Frameworks
                             Foundation              UIKit


      Language             [textView setStringValue: @“Hello”];
      (& Runtime)
                                       Objective-C



Tuesday, January 5, 2010                                          29
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




Tuesday, January 5, 2010                                                      30
Objects




Tuesday, January 5, 2010   31
Object



                           Thing




Tuesday, January 5, 2010                    32
Behavior



                                Thing




           behavior        doSomething




Tuesday, January 5, 2010                        33
Message



                                Thing

       "doSomething"




                           doSomething




Tuesday, January 5, 2010                       34
State



                                   Thing
                           flag
           state           count



           behavior        doSomething




Tuesday, January 5, 2010                           35
Other Objects As State



                                   Thing
                           flag
           state           count



           behavior        doSomething




Tuesday, January 5, 2010                            36
Other Objects As State



                                   Thing
                           flag
           state           count



           behavior        doSomething
                           doSomethingElse




Tuesday, January 5, 2010                            36
Other Objects As State



                                Thing
                           flag
           state           count
                           helper

           behavior        doSomething
                           doSomethingElse




Tuesday, January 5, 2010                            36
Other Objects As State

                                               Other Thing

                                Thing
                           flag               performDifficultTask
           state           count
                           helper

           behavior        doSomething
                           doSomethingElse




Tuesday, January 5, 2010                                           36
Outlets   Need to decide what the
                                                     demo would be and update
                                                     slide to appropriate
                                                     material.

                                                     - text field / slider?

                                                     - color tabs?




                              Controller
                           slider
                           label

                           updateLabel




Tuesday, January 5, 2010                                                        37
Target / Action




                              Controller
                                               target
                           slider              action ʻupdateLabelʼ
                           label

                           updateLabel




Tuesday, January 5, 2010                                              38
Demo




Tuesday, January 5, 2010   39
Outlets




                              Controller
                           slider
                           label

                           updateLabel




Tuesday, January 5, 2010                             40
Target / Action




                              Controller
                                               target
                           slider              action ʻupdateLabelʼ
                           label

                           updateLabel




Tuesday, January 5, 2010                                              41
Questions?




Tuesday, January 5, 2010   42

Mais conteúdo relacionado

Mais de Mahmoud

مهارات التفكير الإبتكاري كيف تكون مبدعا؟
مهارات التفكير الإبتكاري  كيف تكون مبدعا؟مهارات التفكير الإبتكاري  كيف تكون مبدعا؟
مهارات التفكير الإبتكاري كيف تكون مبدعا؟Mahmoud
 
كيف تقوى ذاكرتك
كيف تقوى ذاكرتككيف تقوى ذاكرتك
كيف تقوى ذاكرتكMahmoud
 
مهارات التعامل مع الغير
مهارات التعامل مع الغيرمهارات التعامل مع الغير
مهارات التعامل مع الغيرMahmoud
 
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمMahmoud
 
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائقتطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائقMahmoud
 
الشخصية العبقرية
الشخصية العبقريةالشخصية العبقرية
الشخصية العبقريةMahmoud
 
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيه
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيهمهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيه
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيهMahmoud
 
مهارات التفكير الإبتكاري كيف تكون مبدعا؟
مهارات التفكير الإبتكاري  كيف تكون مبدعا؟مهارات التفكير الإبتكاري  كيف تكون مبدعا؟
مهارات التفكير الإبتكاري كيف تكون مبدعا؟Mahmoud
 
مهارات التعامل مع الغير
مهارات التعامل مع الغيرمهارات التعامل مع الغير
مهارات التعامل مع الغيرMahmoud
 
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائقتطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائقMahmoud
 
كيف تقوى ذاكرتك
كيف تقوى ذاكرتككيف تقوى ذاكرتك
كيف تقوى ذاكرتكMahmoud
 
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمMahmoud
 
الشخصية العبقرية
الشخصية العبقريةالشخصية العبقرية
الشخصية العبقريةMahmoud
 
Accident Investigation
Accident InvestigationAccident Investigation
Accident InvestigationMahmoud
 
Investigation Skills
Investigation SkillsInvestigation Skills
Investigation SkillsMahmoud
 
Building Papers
Building PapersBuilding Papers
Building PapersMahmoud
 
Appleipad 100205071918 Phpapp02
Appleipad 100205071918 Phpapp02Appleipad 100205071918 Phpapp02
Appleipad 100205071918 Phpapp02Mahmoud
 
Operatingsystemwars 100209023952 Phpapp01
Operatingsystemwars 100209023952 Phpapp01Operatingsystemwars 100209023952 Phpapp01
Operatingsystemwars 100209023952 Phpapp01Mahmoud
 
A Basic Modern Russian Grammar
A Basic Modern Russian Grammar A Basic Modern Russian Grammar
A Basic Modern Russian Grammar Mahmoud
 

Mais de Mahmoud (20)

مهارات التفكير الإبتكاري كيف تكون مبدعا؟
مهارات التفكير الإبتكاري  كيف تكون مبدعا؟مهارات التفكير الإبتكاري  كيف تكون مبدعا؟
مهارات التفكير الإبتكاري كيف تكون مبدعا؟
 
كيف تقوى ذاكرتك
كيف تقوى ذاكرتككيف تقوى ذاكرتك
كيف تقوى ذاكرتك
 
مهارات التعامل مع الغير
مهارات التعامل مع الغيرمهارات التعامل مع الغير
مهارات التعامل مع الغير
 
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
 
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائقتطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
 
الشخصية العبقرية
الشخصية العبقريةالشخصية العبقرية
الشخصية العبقرية
 
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيه
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيهمهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيه
مهارات كتابه السيرة الذاتيه واجتياز المقابله الشخصيه
 
مهارات التفكير الإبتكاري كيف تكون مبدعا؟
مهارات التفكير الإبتكاري  كيف تكون مبدعا؟مهارات التفكير الإبتكاري  كيف تكون مبدعا؟
مهارات التفكير الإبتكاري كيف تكون مبدعا؟
 
مهارات التعامل مع الغير
مهارات التعامل مع الغيرمهارات التعامل مع الغير
مهارات التعامل مع الغير
 
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائقتطوير الذاكرة    تعلم كيف تحفظ 56 كلمة كل 10 دقائق
تطوير الذاكرة تعلم كيف تحفظ 56 كلمة كل 10 دقائق
 
كيف تقوى ذاكرتك
كيف تقوى ذاكرتككيف تقوى ذاكرتك
كيف تقوى ذاكرتك
 
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكمستيفن كوفي ( ادارة الاولويات ) لايفوتكم
ستيفن كوفي ( ادارة الاولويات ) لايفوتكم
 
الشخصية العبقرية
الشخصية العبقريةالشخصية العبقرية
الشخصية العبقرية
 
Accident Investigation
Accident InvestigationAccident Investigation
Accident Investigation
 
Investigation Skills
Investigation SkillsInvestigation Skills
Investigation Skills
 
Building Papers
Building PapersBuilding Papers
Building Papers
 
Appleipad 100205071918 Phpapp02
Appleipad 100205071918 Phpapp02Appleipad 100205071918 Phpapp02
Appleipad 100205071918 Phpapp02
 
Operatingsystemwars 100209023952 Phpapp01
Operatingsystemwars 100209023952 Phpapp01Operatingsystemwars 100209023952 Phpapp01
Operatingsystemwars 100209023952 Phpapp01
 
A Basic Modern Russian Grammar
A Basic Modern Russian Grammar A Basic Modern Russian Grammar
A Basic Modern Russian Grammar
 
Teams Ar
Teams ArTeams Ar
Teams Ar
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

01 Introduction

  • 1. Welcome to CS193P iPhone Application Development Alan Cannistraro accannis@stanford.edu Josh Shaffer joshh@stanford.edu Tuesday, January 5, 2010 1
  • 2. Introductions • Lecturers ■ Alan Cannistraro <accannis@stanford.edu> ■ Josh Shaffer <joshh@stanford.edu> • Student TAs ■ Paul Salzman <paulsalz@stanford.edu> ■ David Jacobs <dejacobs@stanford.edu> • Grand-Master Chief ■ Paul Marcos <pmarcos@apple.com> Tuesday, January 5, 2010 2
  • 4. Quick Survey • Have worked with Object Oriented Programming?? Tuesday, January 5, 2010 3
  • 5. Quick Survey • Have worked with Object Oriented Programming?? • Have developed apps for Mac OS X? Tuesday, January 5, 2010 3
  • 6. Quick Survey • Have worked with Object Oriented Programming?? • Have developed apps for Mac OS X? • Have installed the iPhone SDK and done iPhone development? Tuesday, January 5, 2010 3
  • 7. Quick Survey • Have worked with Object Oriented Programming?? • Have developed apps for Mac OS X? • Have installed the iPhone SDK and done iPhone development? • Have submitted apps to the App Store? Tuesday, January 5, 2010 3
  • 9. Logistics • Lectures: ■ Education 128 ■ Tuesday & Thursday 4:15 - 5:30 PM Tuesday, January 5, 2010 4
  • 10. Logistics • Lectures: ■ Education 128 ■ Tuesday & Thursday 4:15 - 5:30 PM • Optional Section ■ Room & Time - TBD ■ Guest speakers & hot topics Tuesday, January 5, 2010 4
  • 11. Logistics • Lectures: ■ Education 128 ■ Tuesday & Thursday 4:15 - 5:30 PM • Optional Section ■ Room & Time - TBD ■ Guest speakers & hot topics • Office Hours ■ Paul & David will hold office hours ■ See website for details Tuesday, January 5, 2010 4
  • 12. Requirements • Prerequisite: CS 106B/X • Recommended Book: None! We’ll use Apple documentation • Required Hardware & Software: ■ Intel-based Macintosh, running Mac OS X 10.5 Leopard ■ iPhone SDK (not currently available on cluster computers) • iPhone or iPod touch is not required ■ Assignments may be completed using the iPhone Simulator ■ Loaner iPod touches will be available Tuesday, January 5, 2010 5
  • 14. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit Tuesday, January 5, 2010 6
  • 15. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit Tuesday, January 5, 2010 6
  • 16. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit • You MUST fill out a survey to be considered ■ http://tinyurl.com/cs193p-2010 ■ Need to be completed by noon tomorrow (1/6) Tuesday, January 5, 2010 6
  • 17. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit • You MUST fill out a survey to be considered ■ http://tinyurl.com/cs193p-2010 ■ Need to be completed by noon tomorrow (1/6) Tuesday, January 5, 2010 6
  • 18. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit • You MUST fill out a survey to be considered ■ http://tinyurl.com/cs193p-2010 ■ Need to be completed by noon tomorrow (1/6) • Enrollment will be determined based on prior CS courses, other relevant experience, number of quarters remaining, major Tuesday, January 5, 2010 6
  • 19. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit • You MUST fill out a survey to be considered ■ http://tinyurl.com/cs193p-2010 ■ Need to be completed by noon tomorrow (1/6) • Enrollment will be determined based on prior CS courses, other relevant experience, number of quarters remaining, major Tuesday, January 5, 2010 6
  • 20. Enrollment • Response has been phenomenal (again)! ■ Enrollment limited to 60 students ■ 40 Graded, 20 Pass/No Credit • You MUST fill out a survey to be considered ■ http://tinyurl.com/cs193p-2010 ■ Need to be completed by noon tomorrow (1/6) • Enrollment will be determined based on prior CS courses, other relevant experience, number of quarters remaining, major • Auditors welcome! Tuesday, January 5, 2010 6
  • 21. iPhone Developer University Program • Stanford is part of the iPhone Developer University Program ■ Do not sign up for this! • Free on-device development for students (save $99!) ■ Valid through the end of the quarter ■ Invites will be issued to your @stanford.edu email address ■ Read through a Student Agreement to get started Tuesday, January 5, 2010 7
  • 22. Available on iTunes U Tuesday, January 5, 2010 8
  • 23. 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 lectures and materials are available Tuesday, January 5, 2010 9
  • 24. 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 ■ Download materials now, if you want them later! Tuesday, January 5, 2010 10
  • 25. Communication and Materials • Email ■ cs193p@cs.stanford.edu ■ Questions from enrolled students only, please! • Course web site ■ http://cs193p.stanford.edu • Other web sites ■ Apple Dev Center: http://developer.apple.com ■ Developer Forums: http://devforums.apple.com ■ External resources: ■ http://cs193p.com ■ http://groups.google.com/group/iphone-appdev-auditors/ Tuesday, January 5, 2010 11
  • 26. Communication and Materials • Auditors ■ cs193p-auditors@lists.stanford.edu ■ Self-add email list ■ Low volume, but allows us to communicate with all folks following along ■ To sign up, go to: ■ http://lists.stanford.edu ■ https://mailman.stanford.edu/mailman/listinfo/cs193p-auditors Tuesday, January 5, 2010 12
  • 27. Why Are We Here? To build iPhone & iPod touch applications using Cocoa Touch Tuesday, January 5, 2010 13
  • 28. Why Are We Here? • CS193P is not just about the iPhone, Cocoa Touch or ObjC • It’s about Software Engineering, as well as object oriented architecture and design • Exposure to problems and solutions that you might not see in other classes Tuesday, January 5, 2010 14
  • 29. Cocoa Touch & iPhone SDK Tuesday, January 5, 2010 15
  • 30. 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 Tuesday, January 5, 2010 15
  • 31. Things We’ll Cover Tuesday, January 5, 2010 16
  • 32. Tools Frameworks Language (& Runtime) Tuesday, January 5, 2010 17
  • 33. Tools Xcode Interface Builder Frameworks Language (& Runtime) Tuesday, January 5, 2010 17
  • 34. Tools Xcode Interface Builder Frameworks Foundation UIKit Language (& Runtime) Tuesday, January 5, 2010 17
  • 35. Tools Xcode Interface Builder Frameworks Foundation UIKit Language [textView setStringValue: @“Hello”]; (& Runtime) Objective-C Tuesday, January 5, 2010 17
  • 36. Why Objective-C? • Exposure to other languages is always good • ObjC is a language focused on simplicity and the elegance of OO 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++ and Java Tuesday, January 5, 2010 18
  • 37. 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! Tuesday, January 5, 2010 19
  • 38. Applications You Will Build HelloStanford & Obj-C Tool HelloPoly - 2 weeks Paparazzi - 4 weeks Final Project (your choice) - 3 weeks Tuesday, January 5, 2010 20
  • 39. 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 Thursday to help work out any tools or installation issues • Due on Jan 13 (next Wednesday) Tuesday, January 5, 2010 21
  • 40. Paparazzi • Build a fully functional application from scratch over 4 weeks • Access photos on • Each assignment builds on the previous one ■ Don’t fall behind! • Covers a wide variety of topics in the UIKit framework... Tuesday, January 5, 2010 22
  • 41. What We’ll Cover • Application design patterns • View controllers • Presenting data ■ Table views • Loading & saving data ■ Property lists, Core Data, web services • Text input • Threading and Performance • Address Book and other system integration • iPhone SDK 3.0 stuff! ■ MapKit, Video & Photo APIs, & more Tuesday, January 5, 2010 23
  • 42. Final Projects • 3 weeks to work on them • 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 • Find a project that you or your friends would actually like to use! • Post it on the app store? • http://www.stanfordiphoneclassapps.com Tuesday, January 5, 2010 24
  • 44. iPhone OS Overview Tuesday, January 5, 2010 26
  • 46. Mac OS X Tuesday, January 5, 2010 27
  • 47. Mac OS X Cocoa Media Core Services Core OS Tuesday, January 5, 2010 27
  • 48. Cocoa Media Core Services Core OS Tuesday, January 5, 2010 27
  • 49. Cocoa Touch Media Core Services Core OS Tuesday, January 5, 2010 27
  • 50. iPhone OS Cocoa Touch Media Core Services Core OS Tuesday, January 5, 2010 27
  • 51. iPhone OS Cocoa Touch Media Core Services Core OS Tuesday, January 5, 2010 28
  • 52. 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 Tuesday, January 5, 2010 28
  • 53. 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 Tuesday, January 5, 2010 28
  • 54. 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 Tuesday, January 5, 2010 28
  • 55. iPhone OS Cocoa Touch Cocoa Touch Multi-Touch Events Alerts Multi-Touch Controls Web View Media Accelerometer People Picker Core Services View Hierarchy Image Picker Core OS Localization Camera Tuesday, January 5, 2010 28
  • 56. iPhone OS Cocoa Touch Media Core Services Core OS Tuesday, January 5, 2010 28
  • 57. Tools Xcode Interface Builder Frameworks Foundation UIKit Language [textView setStringValue: @“Hello”]; (& Runtime) Objective-C Tuesday, January 5, 2010 29
  • 58. 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 Tuesday, January 5, 2010 30
  • 60. Object Thing Tuesday, January 5, 2010 32
  • 61. Behavior Thing behavior doSomething Tuesday, January 5, 2010 33
  • 62. Message Thing "doSomething" doSomething Tuesday, January 5, 2010 34
  • 63. State Thing flag state count behavior doSomething Tuesday, January 5, 2010 35
  • 64. Other Objects As State Thing flag state count behavior doSomething Tuesday, January 5, 2010 36
  • 65. Other Objects As State Thing flag state count behavior doSomething doSomethingElse Tuesday, January 5, 2010 36
  • 66. Other Objects As State Thing flag state count helper behavior doSomething doSomethingElse Tuesday, January 5, 2010 36
  • 67. Other Objects As State Other Thing Thing flag performDifficultTask state count helper behavior doSomething doSomethingElse Tuesday, January 5, 2010 36
  • 68. Outlets Need to decide what the demo would be and update slide to appropriate material. - text field / slider? - color tabs? Controller slider label updateLabel Tuesday, January 5, 2010 37
  • 69. Target / Action Controller target slider action ʻupdateLabelʼ label updateLabel Tuesday, January 5, 2010 38
  • 71. Outlets Controller slider label updateLabel Tuesday, January 5, 2010 40
  • 72. Target / Action Controller target slider action ʻupdateLabelʼ label updateLabel Tuesday, January 5, 2010 41