Welcome to CSE 436S So/ware Engineering Workshop “iPhone Class” Networking Platform 1 Extensible - CSE 436 – Software Engineering Workshop 1 Course Informa>on • Instructor – – – – Todd Sproull todd@wustl.edu Jolley 538 Office Hours by Appointment • Classrooms – McMillan G052 – Whitaker 316 (Mac Lab) • Time – Mondays and Wednesdays 10 – 11:30 AM • Course Website – hNp://research.engineering.wustl.edu/~todd/cse436/ • Head TA – Lyn Han • lynhan@wustl.edu Networking Platform 2 Extensible - CSE 436 – Software Engineering Workshop 2 Requirements • CSE 332S – Object Oriented SoTware Development Laboratory • Access to an Intel-­‐based Macintosh – Running Mac OS X 10.9 – 10.11 – iPhone SDK Xcode 6.4 and iOS 8 • Textbook – None, we will use lecture slides and the developer.apple.com website • Owning an iPhone or iPod Touch not required – We will use the simulator throughout the semester – Final projects may target an iPhone or iPod Touch Networking Platform 3 Extensible - CSE 436 – Software Engineering Workshop 3 Stanford CS193p • This course is based on cs193p taught at Stanford by Evan Doll and Alan Cannistraro – Lectures and slides available on iTunes • Many of the lectures and programming assignments come from this class – Ini`al assignments are iden`cal – Later assignments somewhat different • Consider taking the iTunes course if that suits your personality Networking Platform 4 Extensible - CSE 436 – Software Engineering Workshop 4 iPhone Developer University Program • WashU is enrolled in the program – Free development on devices for students – Valid for the en`re semester • Each student will need to enroll online at developer.apple.com – More details to come later • This license does not allow you to sell your applica>on on the App Store Networking Platform 5 Extensible - CSE 436 – Software Engineering Workshop 5 Copyrights, Patents, Fair Use… • Everything discussed in this class and on the website is completely OPEN and FREE – Do whatever you want with it • The goal of this class is to share as much informa>on as possible – Open discussion of topics and ideas • If you have a great idea and do not want others to implement it and sell it DO NOT discuss it here – If you choose to discuss it, we can probably improve it • You are free to become an Apple Developer ($99/yr) and sell anything you create in this class – Or implement another student’s great idea and sell it Networking Platform 6 Extensible - CSE 436 – Software Engineering Workshop 6 What is this class all about? • So/ware Engineering – Crea`ng useful soTware to solve interes`ng problems – U`lize amazing hardware with lots of cool features • Building applica>ons on the Apple iPhone and iPod Touch with Cocoa Touch Networking Platform 7 Extensible - CSE 436 – Software Engineering Workshop 7 Cocoa Touch and iPhone SDK • Based on Cocoa – API used to develop soTware on Mac • Provides rich star>ng point for exploring app design • Shows real-­‐world implementa>ons of OO design pa^erns • Designs learned on iPhone translate directly to Mac OS X Networking Platform 8 Extensible - CSE 436 – Software Engineering Workshop 8 Why Objec>ve-­‐C • Exposure to other languages is good – Probably new to most students to this class • ObjC is a language focused on simplicity and elegance of objected oriented design – Based on ANSI C – Brings many object oriented principles, but with a minimal amount of syntax • Useful data point to compare with designs of C, C++, Java other languages Networking Platform 9 Extensible - CSE 436 – Software Engineering Workshop 9 Grading • 5 lab assignments during the semester – 55% of your final grade • Mid-­‐term – Covers ObjC programming and some soTware engineering concepts – 20% of your final grade • Final Project – Work on something that can make a difference • Start thinking about your project today! – 25% of your final grade Extensible Networking Platform 10 - CSE 436 – Software Engineering Workshop 10 Ques>ons? Networking Platform 11Extensible - CSE 436 – Software Engineering Workshop 11 iPhone OS Overview Extensible Networking Platform 12 - CSE 436 – Software Engineering Workshop 12 iPhone Extensible Networking Platform 13 - CSE 436 – Software Engineering Workshop 13 Mac OS X Extensible Networking Platform 14 - CSE 436 – Software Engineering Workshop 14 Mac OS X Extensible Networking Platform 15 - CSE 436 – Software Engineering Workshop 15 iPhone / iPad Extensible Networking Platform 16 - CSE 436 – Software Engineering Workshop 16 • Core OS – – – – – – – OS X Kernel BSD Sockets Security Power Mgmt Keychain File System Extensible Networking Platform 17 - CSE 436 – Software Engineering Workshop 17 • Core Services – – – – – – Extensible Networking Platform 18 - CSE 436 – Software Engineering Workshop Collec`ons Networking SQLite Net Services Threading Preferences 18 • Media – – – – – – – – – Core Audio Audio Mixing Audio Recording Video Playback JPG, PNG, TIFF PDF Quartz (2D) Core Anima`on OpenGL ES Extensible Networking Platform 19 - CSE 436 – Software Engineering Workshop 19 • Cocoa Touch – – – – – – Extensible Networking Platform 20 - CSE 436 – Software Engineering Workshop Mul`-­‐Touch Events Mul`-­‐Touch Controls Accelerometer Localiza`on Alerts Web Views 20 Development • Tools – Xcode • Storyboard (formerly Interface Builder) • Frameworks – Founda`ons – UIKit • Languages and Run>mes – Objec`ve C – SwiT Extensible Networking Platform 21 - CSE 436 – Software Engineering Workshop 21 Cocoa Touch Architecture Extensible Networking Platform 22 - CSE 436 – Software Engineering Workshop 22 Object Oriented Programming Extensible Networking Platform 23 - CSE 436 – Software Engineering Workshop 23 Object Thing Extensible Networking Platform 24 - CSE 436 – Software Engineering Workshop 24 Behavior Thing behavior doSomething Extensible Networking Platform 25 - CSE 436 – Software Engineering Workshop 25 Message Thing “doSomething” doSomething Extensible Networking Platform 26 - CSE 436 – Software Engineering Workshop 26 State Thing state count flag behavior doSomething Extensible Networking Platform 27 - CSE 436 – Software Engineering Workshop 27 Other Objects as State otherThing Thing state behavior count flag helper doMore doSomething Extensible Networking Platform 28 - CSE 436 – Software Engineering Workshop 28 Outlets Controller slider label updateLabel Extensible Networking Platform 29 - CSE 436 – Software Engineering Workshop 29 Target/Ac>on Controller slider label target action - ‘updateLabel’ updateLabel Extensible Networking Platform 30 - CSE 436 – Software Engineering Workshop 30 Demo Extensible Networking Platform 31 - CSE 436 – Software Engineering Workshop 31 Recap • Keep logic separate from interface elements • Outlets connect controllers to views • Use target/ac>on to customizer behavior Extensible Networking Platform 32 - CSE 436 – Software Engineering Workshop 32