C S 63A: DEVELOPING APPLICATIONS FOR IOS
Foothill College Course Outline of Record
|Hours:||4 lecture, 2 laboratory per week (72 total per quarter)|
|Advisory:||C S 1B, 2B or 3B.|
|Degree & Credit Status:||Degree-Applicable Credit Course|
|Grade Type:||Letter Grade (Request for Pass/No Pass)|
Student Learning Outcomes
- Produce clearly written Objective-C code that solves a given problem.
- Write a program that stores user data in between sessions.
The student will be able to:
A. Use Xcode to develop apps for the iPhone, iPad and iPod Touch.
B. Analyze a user's needs and create an easy-to-use app that meets those needs.
C. Write a program using the Swift language.
D. Organize a computer program using the Model/View/Controller architecture.
E. Produce clearly written code in an industry standard style.
F. Use many of the Cocoa Touch UI Frameworks.
G. Access built-in applications.
H. Use abstraction to solve a specific problem using more general purpose tools.
I. Persist data.
J. Debug and document units of code.
K. Thoroughly test an app on the simulator and on an actual device.
A. Using the Xcode integrated development environment
1. Interface Builder and storyboards
2. iOS simulator
B. Creating a useful app in an efficient manner
1. User centered design
2. User stories
3. The Agile development process
1. Classes, objects, instances
2. Instance variables, methods, initializers
3. Inheritance and events
1. Class diagrams
2. Target action
3. Delegation, observation and notification
E. Programming style
1. Code reviews
3. Indentation and capitalization
4. Creating reusable classes
F. Cocoa Touch Frameworks
2. File system
1. Application states
H. Persist data
1. Table view
2. Using the device's file system
A. Use the XCode IDE
1. Use storyboards to construct a user interface.
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.
B. Application development process
1. Design a user interface.
2. Perform user testing.
3. Incremental development.
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.
D. 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.
E. 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.
F. Cocoa Touch Frameworks
1. Write a program that uses the UIKit Framework.
2. Deduce how a function or method design impacts the program that invokes it.
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.
G. 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.
H. Persist data from one user session to the next
1. Use the table view to store data on the device.
I. Test the app
1. Simulate the execution in the Xcode IDE.
2. Run the app on different devices/platforms.
Special Facilities and/or Equipment
B. Apple devices/systems running the latest version of iOS for developing and testing student apps.
C. 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.
D. 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.
E. When taught via Foothill Global Access on the internet, students must have currently existing email accounts and ongoing access to computers with internet capabilities.
Method(s) of Evaluation
A. Tests and quizzes
B. Written laboratory assignments, which include source code, sample runs and documentation
C. Final examination
Method(s) of Instruction
A. Lectures, which include motivation for syntax and use of the Swift language and OOP concepts, example programs, and analysis of these programs.
B. Online labs (for all sections, including those meeting face-to-face/on campus), consisting of:
1. A programming assignment webpage 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 webpage 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.
C. Detailed review of programming assignments.
D. In-person or online discussion which engages students and instructor in an ongoing dialog pertaining to all aspects of designing, implementing and analyzing programs.
E. When course is taught fully online:
1. 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 online practices.
Representative Text(s) and Other Materials
Intro to App Development with Swift. Apple Inc. Education, 2017.
Types and/or Examples of Required Reading, Writing, and Outside of Class Assignments
1. Textbook assigned reading averaging 30 pages per week.
2. Reading the supplied handouts and modules averaging 10 pages per week.
3. Reading online resources as directed by instructor though links pertinent to programming.
4. Reading library and reference material directed by instructor through course handouts.
1. Writing technical prose documentation that supports and describes the programs that are submitted for grades.