COMP 446 / ELEC 446 Mobile Device Applications
Scott Cutler Professor in the Practice of Computer Technology Department of Computer Science Department of Electrical and Computer Engineering
[email protected] 8/22/12
Wednesday 2-3:30, DH 1046
Agenda Events of the Week Housekeeping Syllabus Next week’s assignment and class A little more on Objective C
Questions on Assignment #1 Steve Job’s Legacy (if we have time)
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
2
Events of the Week background MIT’s Area Exam
Rapidly learn a topic Keep abreast of your surroundings and how that will impact you and your specialty.
Was the most important thing ingrained in me from 7
years at MIT These are the prime skills required of a CTO and are
the foundation of ELEC/COMP 694
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
3
Events of the Week Jury decides Samsung infringed on Apple patents Impact on Apple, Samsung, Nokia, MSFT, HTC Windows 8 RTM along with VS 2012 Regulators OK Verizon's $3.9B bid to buy cable spectrum As first 'lockup' ends, Facebook stock drops 5 percent A Look Inside Microsoft's SkyDrive Cloud Service iPad Mini Name 'Confirmed' Apple becomes world's most valuable public company Best Buy suspends forecast as fiscal Q2 profit slides 91% Dell Stock Plummets as PC Price Wars Intensify Dell and HP Missing the Mobile Boat HP to Report its Biggest Quarterly Loss in History Dell Names Ex-HP Exec to Head Enterprise Solutions Unit
Amazon Announces September 6 Press Conference; Mum on Details SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
4
Current Roster Victor Acuna Ryan Artecona Gbenga Badipe
Joel Baranowski Peter Chang Joan Chao SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
5
Current Roster (2) Alex Chiu Heaven Chen Lingo Dai
Weibo He Sahil Hingorani
Zhehao Li SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
6
Current Roster (3) Abdul Nimeri Bill Robertson Frank Salinas
Tyler Siegert Austin Witt
Matthew Zhao SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
7
Software Course Website: www.comp446.com
assignment submission website linked through www.comp446.com
iPhone Developer Program
iPhone Documentation available at http://developer.apple.com Students will be enrolled in Rice’s iPhone University Developer’s Program You should have already responded to invitations
Xcode available free on Macs Remember User: xcode, Password: xcode
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
8
Assignment Files Unless otherwise instructed, submit assignment files
as a zip file of Xcode project directory. Ensure that all resources are part of the project
directory so they are included in zip. Clean project before archiving. Greatly reduces size.
Screen shots or PDF documents preferred for some
assignments (when indicated). OK to make multiple submissions when both file types
needed – but not of individual Xcode project files. SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
9
Optional Sessions and Support Monday office hours with TA Richard Latimer. 4:00pm Mudd Additional session Thursday, 9pm on 8/30 and 9/6. Ability to email questions to me at any time.
Can email Richard Latimer as well.
Level of support will vary over semester
High level of support at the beginning. Support decreasing each project as over time as knowing where to look or how to debug is a very important skill for you to learn. Richard instructed to respond conceptually – not just provide solutions.
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
10
COMP 446 (tentative) Syllabus
Lecture 1 - 8/22/12 - Introduction
1, 2 #2 – Function Calculator Friday, 9/7 6:00 am (Thursday 30:00)
Watch before: Assignment: Assignment due:
3, 4 (demo part) #3 – Graphing Universal Calculator Tuesday, 9/18 6:00 am (Thursday 30:00)
Lecture 4 - 9/12/12 - Assignment 3 issues and questions from videos
Watch before: Assignment: Assignment due:
Lecture 3 - 9/05/12 - Assignment 2 issues and questions from videos
None #1 - Calculator Friday, 8/31 6:00 am (Thursday 30:00)
Lecture 2 - 8/29/12- Assignment 1 issues and questions from videos
Watch before: Assignment: Assignment due:
Watch before: Assignment: Assignment due:
4 (post demo), 5, 6 Continue with #3 – Graphing Universal Calculator Tuesday, 9/18 6:00 am (Monday 30:00)
Lecture 5 - 9/19/12 - Assignment 3 issues and questions from videos
Watch before: Assignment: Assignment due:
SEC - 8/22/12
Watch 7 before class, 8 after class #4 – Fiickr Top Places Friday, 9/28 6:00 am (Thursday 30:00) COMP 446 / ELEC 446 - Week 1
11
COMP 446 (tentative) Syllabus
Lecture 6 - 9/26/12 - Assignment 4 issues and questions from videos
Watch before: Assignment:
Assignment due:
10 (after Tab Bar), 11, 12 1: #6 – Fiickr Core Data - Likely to be broken into required and optional parts - Optional part required for A+ 2: Final Project Topic (due before next class) Friday, 10/12 6:00 am (Thursday 30:00)
Lecture 8 - 10/10/12 - Assignment 6 issues and SQL
8, 9 very beginning of 10 #5 – Fiickr Map Places Friday, 10/5 6:00 am (Thursday 30:00)
Lecture 7 - 10/03/12 - Assignment 5 issues and questions from videos
Watch before: Assignment: Assignment due:
Watch before: Assignment: Assignment due:
13, 14 Final Project Proposal Tuesday, 10/16 6:00 am (Monday 30:00)
Lecture 9 - 10/17/12 - iOS 6
Watch before: Assignment: Assignment due:
SEC - 8/22/12
Optional 15, 16 iOS 6 app Friday, 10/26 6:00 am (Thursday 30:00)
COMP 446 / ELEC 446 - Week 1
12
COMP 446 (tentative) Syllabus
Lecture 10 - 10/24/12 – HTML 5
Assignment: Assignment due:
Continue working on Final Project Wednesday, 11/28 2:00pm
Assignment: Assignment due:
Continue working on Final Project Wednesday, 11/28 2:00pm
Lecture 14 - 11/21/12 – No class, but continue on final project
Continue working on Final Project Wednesday, 11/28 2:00pm
Lecture 13 - 11/14/12 - Individual meetings on Final Project
Assignment: Assignment due:
Lecture 12 - 11/7/12- Android vs. iOS vs. Windows Phone group debate
Optional 17, 18 Major Final Project Feature Friday, 11/2 6:00 am (Thursday 30:00)
Lecture 11 - 10/31/12 - TBD
Watch before: Assignment: Assignment due:
Assignment: Assignment due:
Continue working on Final Project Wednesday, 11/28 2:00pm
Lecture 15 - 11/28/12 - Final Presentations
Assignment: Assignment due:
SEC - 8/22/12
Document Final Project By time assigned for COMP 446 final (there is NO final exam) COMP 446 / ELEC 446 - Week 1
13
Final Project To be determined by 8th class Can target iOS, Android or WP device Proposal submitted by 10/10/12 Full Spec 10/17/12 Various milestones including presentation to class on 11/28/12 Final code for project incorporating comments from presentation due on the official finals date of the course. This is VERY important: If you do not have a great project definition, the 2nd half of the course will suffer. With a great project, this will be an exciting course. Great if your project could have life after the class finishes
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
14
Week 3 Watch CS193p lectures #3 and #4 (demo part) before class Complete CS193p Assignment #2
Try and complete before next class. Due shortly after next class.
Submit assignments, review lectures at www.comp446.com Start thinking about big project Next week’s lecture – mostly review of Objective C fundimentals
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
15
Discussion
Who is Paul Hegarty Better question: Why is an Objective-C string
called NSString How are these two questions related and why
is it relevant to the high quality of these videos.
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
17
Object-Oriented Terms Class
(description/template for an object)
Instance
(manifestation of a class)
Instance Variable Message Method
(sent to objects to make them act)
(code invoked by a Message)
Inheritance
(code-sharing mechanism)
Super/Subclass Protocol
(object-specific storage)
(Inheritance relationships)
(.h without .m with other objects announcing suport)
Source: CS193p Lecture #1 SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
18
Xcode 4 - You’ve learned how to ...
Create a new project with a single MVC
Show various files in your project (via Navigator or clicking on bars at the top of files)
Show and hide the Navigator, Assistant Editor, Console, Object Library, Inspector
Drag objects into your view and edit their size, position and object-specific display attributes
Ctrl-drag to connect objects in your View to the code in your Controller (outlets and actions)
Show connections to outlet @propertys and action methods (by mouse-over or right click)
Get quick help (option click) or full documentation (option double-click) for symbols in your code
Run your application in the simulator
Click on warning (yellow) and error (red) indicators to see problems in your code
Create a new class (like CalculatorBrain) using the File menu’s New File ... item
Create browser-like tabs to organize your viewing of your project Source: CS193P 2011 Lecture 3 SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
19
Objective C - You’ve learned how to ...
Define a class’s public @interface and private @implementation in a .h and .m file respectively
Add a private @interface to .m file
Create a @property, both for a primitive type (like BOOL) and a pointer (like NSMutableArray *)
Use nonatomic in @property declarations
Use strong or weak in @property declarations of pointers to objects
Use @synthesize to create a @property’s setter and getter and backing instance variable
Use “= _propertyname” to choose the name @synthesize uses for its backing instance variable
For pointers to an object, use either the special type id or a static type (e.g. UIButton *)
Declare and define an Objective C method (e.g. pushOperand: or popOperand).
Declare local variables both of type “pointer to an object” (id or static type) and primitive type Source: CS193P 2011 Lecture 3 SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
20
Objective C - You’ve learned how to ...
Invoke an Objective C method (using square bracket [] notation)
Invoke a setter or getter using dot notation (e.g. self.operandStack or self.display.text)
Lazily instantiate an object by implementing your own @property getter (operandStack & brain)
Wrap a primitive type (like double) in an object (using NSNumber)
Log formatted strings to the console using NSLog()
Use a “constant” NSString in your code using @“” syntax (e.g. @“+”)
Add and remove an object from an NSMutableArray (the last object anyway).
Use alloc and init to create space in the heap for an object (well, you’ve barely learned this).
#import the .h file of one class into another’s (CalculatorBrain.h into your Controller)
Create a string by asking a string to append another string onto it
Create a string with a printf-like format (e.g., [NSString stringWithFormat:@“%g”, result])
Perhaps you’ve learned even more if you’ve done Assignment #1! Source: CS193P 2011 Lecture 3 SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
21
Syntax Conventions Class object capitalized
NSObject, NSArray, etc.
Method names are lower case
stringByAppendingString
Instances of classes are in lower case
self, myBrain
Long names have capitals bounding words
stringByAppendingString
Brain is not the same as brain SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
22
(almost) Everything is an Object Classes, instances, types, colors Major exceptions are C-structs as are numbers (but
not NSNumbers) You can send messages to classes [[MyClass alloc] init]; [NSString stringByAppendingString] (ClassName) does not change an object’s class, but tells Xcode that it can assume object is of class ClassName.
SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
23
To * or not to * An object instance variable is only a pointer
Initially set to nil (which is 0) You can safely send messages to nil
NSString foo = @”This is not correct syntax”; NSString *foo =@”This is correct syntax”; id foo = @”id types do not use a *”; We will latter see **foo implying a pointer to a pointer. SEC - 8/22/12
COMP 446 / ELEC 446 - Week 1
24
Assignment #1 Questions
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
25
THE LEGACY OF STEVE JOBS
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
26
Waves of Technology Every 10 years or so, something big changes
Core leaders of this technology often young
Luck or Skill
Many people have one great idea, some two Few have one great idea after another Often requires excellence in multiple areas
Risk and Failure SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
27
First or Best Being first gives you a head start, but also
paints a target for those who follow behind. Steve Jobs often took an existing area and
through a set of bold moves changed the paradigm giving people what they really wanted – or would discover that they needed.
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
28
Importance of Owning Solution Allows differentiation and future shaping in cost
competitive environment. Eases introduction of new technology Enables bold moves
Great competitive barrier to entry But can also cost significant business if not at or near
best of breed in an important area. SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
29
Master of Presentations 1983 Apple Keynote-The "1984" Ad Introduction
1984 Superbowl Commercial
The Lost 1984 Video: young Steve Jobs introduces the
Macintosh The charisma of Steve Jobs (video roundup)
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
30
Hyperbole Apple iPad Keynote in 2 minutes! [HD] Back To The Mac in 104 seconds Incredible amazing awesome Apple
The Original Apple Keynote Cutdown. No cuts are repeated. Done with iMovie, which is really awesome...
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
31
My Most Famous Picture Yep, it’s me
SEC - 8/31/11
COMP 446 / ELEC 446 - Week 2
32
Discussion