|Student Learning Outcomes -|
- Produce clearly written Objective-C code that solves a given problem.
- Write a program that stores user data in between sessions.
|Description - |
|An introduction to programming the iPhone, iPad and iPod Touch. Covers Objective-C, Cocoa Touch, and the Model/View/Controller architecture. Students will develop useful applications that include common user interface elements, web services, the device's GPS and camera.|
|Course Objectives - |
|The student will be able to: |
- Use Xcode to develop apps for the iPhone, iPad and iPod Touch.
- Analyze a user's needs and create an easy-to-use app that meets those needs.
- Write a program using the Objective-C language.
- Organize a computer program using the Model/View/Controller architecture.
- Produce clearly written code in an industry standard style.
- Use many of the Cocoa Touch Frameworks.
- Perform a task in the background and notify the user when the task is complete.
- Access built-in applications.
- Persist data.
- Use web services.
- Thoroughly test an app on the simulator and on an actual device
|Special Facilities and/or Equipment - |
- Access to a computer laboratory with computers running the latest version of Xcode.
- iOS devices for testing student apps.
- A website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor). This applies to all sections, including on-campus (i.e., face-to-face) offerings.
- When taught via Foothill Global Access on the Internet, the college will provide a fully functional and maintained course management system through which the instructor and students can interact.
- When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.
|Course Content (Body of knowledge) - |
- Using the Xcode integrated development environment
- Interface Builder and Storyboards
- iOS simulator
- Creating a useful app in an efficient manner
- User centered design
- User stories
- The Agile development process
- Objective - C
- Classes, objects, instances
- Instance variables, methods, initializers
- Inheritance and events
- Class diagrams
- Target action
- Delegation, observation and notification
- Programming style
- Code reviews
- Indentation and capitalization
- Creating reusable classes
- Cocoa Touch Frameworks
- Game Kit
- Map Kit
- File System
- Application states
- Built-in applications
- Address book
- Persist data
- Table view
- Using the device's file system
- Storing data in iCloud
- Web services
- Consuming XML services
- multi- platform
|Methods of Evaluation - |
- Tests and quizzes
- Written laboratory assignments which include source code, sample runs and documentation.
- Final examination
|Representative Text(s) - |
|Conway and Hillegass. iOS Programming. 3rd Edition. Atlanta, Georgia: Big Nerd Ranch, 2012. |
|Disciplines - |
|Computer Science |
|Method of Instruction - |
- Lectures which include motivation for syntax and use of the Objective-C language and OOP concepts, example programs, and analysis of these programs.
- Online labs (for all sections, including those meeting face-to-face/on campus) consisting of
- A programming assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each programming assignment and submit their completed lab work.
- A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publicly with other class members.
- Detailed review of programming assignments.
- In person or on-line discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
- When course is taught fully on-line:
- Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
- Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices
|Lab Content - |
- Use the XCode IDE
- Use the Storyboard to construct a UI.
- Test an application by simulating it in XCode.
- Organize projects within an IDE to make submitting labs and switching project environments an orderly process.
- Application development process
- Design a user interface.
- Perform user testing.
- Incremental development.
- Objective - C
- Write a program that uses a predefined class and that defines a new class.
- Write a program that uses an initializer.
- Write a program that uses inheritance.
- Model/View/Controller architecture
- Draw a simple class diagram to aid in the design and documentation of a program containing many classes.
- Use a target action to communicate between the View and the Controller.
- Delegation, observation and notification.
- Use good programming style
- Participate in code reviews.
- Write correct and complete documentation.
- Use consistent and readable indentation and capitalization.
- Write reusable classes.
- Cocoa Touch Frameworks
- Write a program that uses the UIKit Framework.
- Understand the use of the Game Kit and Map Kit Frameworks.
- Use the iOS file system to persist data to the device.
- Deduce the impact of a function's or method's design on the programs that invoke it.
- Program processes to run in the background
- Put program into various application states.
- Control the program's transition from one state to another.
- Notify the user when the background process is complete
- Access built-in applications
- Make use of the device's Address Book.
- Control the camera or photos on the device.
- Get data from the device's GPS.
- Persist data from one user session to the next
- Use the table view to store data on the device.
- Read and write files to the device.
- Store files in iCloud
- Web services
- Consume XML services
- Request data and receive reply through HTTP
- Test the app
- Simulate the execution in the XCode IDE
- Run the app on different devices/platforms
|Types and/or Examples of Required Reading, Writing and Outside of Class Assignments - |
- Textbook assigned reading averaging 30 pages per week.
- Reading the supplied handouts and modules averaging 10 pages per week.
- Reading on-line resources as directed by instructor though links pertinent to programming.
- Reading library and reference material directed by instructor through course handouts.
- Writing technical prose documentation that supports and describes the programs that are submitted for grades.