Print Version

Effective: Winter 2014

Advisory: Advisory: C S 1B or 2B.
Grade Type: Letter Grade, the student may select Pass/No Pass
Not Repeatable.
FHGE: Non-GE Transferable: CSU
4 hours lecture, 3 hours laboratory. (84 hours total per quarter)

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:
  1. Use Xcode to develop apps for the iPhone, iPad and iPod Touch.
  2. Analyze a user's needs and create an easy-to-use app that meets those needs.
  3. Write a program using the Objective-C language.
  4. Organize a computer program using the Model/View/Controller architecture.
  5. Produce clearly written code in an industry standard style.
  6. Use many of the Cocoa Touch Frameworks.
  7. Perform a task in the background and notify the user when the task is complete.
  8. Access built-in applications.
  9. Persist data.
  10. Use web services.
  11. Thoroughly test an app on the simulator and on an actual device
Special Facilities and/or Equipment -
  1. Access to a computer laboratory with computers running the latest version of Xcode.
  2. iOS devices for testing student apps.
  3. 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.
  4. 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.
  5. 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) -
  1. Using the Xcode integrated development environment
    1. Interface Builder and Storyboards
    2. iOS simulator
    3. Debugger
  2. Creating a useful app in an efficient manner
    1. User centered design
    2. User stories
    3. The Agile development process
  3. Objective - C
    1. Classes, objects, instances
    2. Instance variables, methods, initializers
    3. Inheritance and events
  4. Model/View/Controller
    1. Class diagrams
    2. Target action
    3. Delegation, observation and notification
  5. Programming style
    1. Code reviews
    2. Documentation
    3. Indentation and capitalization
    4. Creating reusable classes
  6. Cocoa Touch Frameworks
    1. UIKit
    2. Game Kit
    3. Map Kit
    4. File System
  7. Multithreading
    1. Application states
    2. Transitions
    3. Notifications
  8. Built-in applications
    1. Address book
    2. Camera
    3. GPS
  9. Persist data
    1. Table view
    2. Using the device's file system
    3. Storing data in iCloud
  10. Web services
    1. Consuming XML services
    2. HTTP
  11. Testing
    1. simulator
    2. multi- platform
Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. Final examination
Representative Text(s) -
Conway and Hillegass. iOS Programming. 3rd Edition. Atlanta, Georgia: Big Nerd Ranch, 2012.

Disciplines -
Computer Science
Method of Instruction -
  1. Lectures which include motivation for syntax and use of the Objective-C language and OOP concepts, example programs, and analysis of these programs.
  2. Online labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. 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.
    2. 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.
  3. Detailed review of programming assignments.
  4. 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.
  5. When course is taught fully on-line:
    1. 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.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices
Lab Content -
  1. Use the XCode IDE
    1. Use the Storyboard to construct a UI.
    2. Test an application by simulating it in XCode.
    3. Organize projects within an IDE to make submitting labs and switching project environments an orderly process.
  2. Application development process
    1. Design a user interface.
    2. Perform user testing.
    3. Incremental development.
  3. Objective - C
    1. Write a program that uses a predefined class and that defines a new class.
    2. Write a program that uses an initializer.
    3. Write a program that uses inheritance.
  4. Model/View/Controller architecture
    1. Draw a simple class diagram to aid in the design and documentation of a program containing many classes.
    2. Use a target action to communicate between the View and the Controller.
    3. Delegation, observation and notification.
  5. Use good programming style
    1. Participate in code reviews.
    2. Write correct and complete documentation.
    3. Use consistent and readable indentation and capitalization.
    4. Write reusable classes.
  6. Cocoa Touch Frameworks
    1. Write a program that uses the UIKit Framework.
    2. Understand the use of the Game Kit and Map Kit Frameworks.
    3. Use the iOS file system to persist data to the device.
    4. Deduce the impact of a function's or method's design on the programs that invoke it.
  7. Program processes to run in the background
    1. Put program into various application states.
    2. Control the program's transition from one state to another.
    3. Notify the user when the background process is complete
  8. Access built-in applications
    1. Make use of the device's Address Book.
    2. Control the camera or photos on the device.
    3. Get data from the device's GPS.
  9. Persist data from one user session to the next
    1. Use the table view to store data on the device.
    2. Read and write files to the device.
    3. Store files in iCloud
  10. Web services
    1. Consume XML services
    2. Request data and receive reply through HTTP
  11. Test the app
    1. Simulate the execution in the XCode IDE
    2. Run the app on different devices/platforms
Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to programming.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.