CPSC 91 Spring 2011

Software Engineering: iOS Development

Schedule | Grading | Labs | Quizzes | Integrity | Accomodations | Links


The topic of CS91 this semester is Software Engineering, particularly focused on iOS Development. iOS is the name of the operating system that runs on many of Apple's products including the iPhone, iPod Touch, and iPad. The prerequisite for this course is CS35.

In this course, you will learn how to write iPhone apps in Objective C using Apple's Xcode IDE (integrated development environment). As a software engineering course, it will also include readings on user interface design, project implementation and unit testing.

The final project for the course will involve writing an app of your choice. You will be required to present the design of your app to the class for feedback, you will need to submit your code to other students for testing purposes, and, conversely, you will need to test the projects of your peers.

You do not need to own an iOS device to take the course. The Xcode IDE includes an iOS simulator that will allow you to run your programs without an iOS device. You will likely find that having a physical device to run your applications is more satisfying. If you already own an iOS device, you will be able to use that for development (though you will find that newer models may support more features than older models). The department will also be making available between 5 and 10 iPod touch devices that we will loan out for class use.

Class information

Professor: Richard Wicentowski
Office: Science Center 251
Phone: (610) 690-5643
Office hours: Thursday 2:30-4:00 pm and by appointment

Room: Science Center 256
Class Time: Wednesday 1:15pm–4:00pm
Lab Times: Thursday 9:55am–11:10am or 1:15pm–2:30pm
Text: There is no textbook for this course

SC256 is reserved for this class during these times:

SC256 is currently booked by other classes during these times:


(will be filled in as we go along)
1 Jan 19 In class demos
Class resources
* Admistrative tasks
* Xcode, Cocoa Touch, and iOS
* Objective-C basics
* Demo: Dice
Lab 01
2 Jan 26 Drop/Add ends (Jan 28) * Git review
* Models, Views, and Controllers (MVC)
* Properties
* Demo: Hangman
* Learn Objective-C at cocadevcentral.com
Lab 02
3 Feb 02   * View Based vs Window Based Apps
* Writing a custom view
* -application:didFinishLaunchingWithOptions:
* UIScrollView
* Demo: Tab Bar application
* Quiz 1
Lab 03
4 Feb 09   * UINavigationController
* UITableViewController
* UITableView
* dataSource vs. delegate
Lab 04
5 Feb 16   * Quiz 2
* Keyboard and resignFirstResponder
* iPad and UISplitViewController
* NSGestureRecognizer and swipe
* NSUserDefaults
Lab 05
6 Feb 23   * Core Data
* Entities, attributes, relations
* NSManagedObject, NSManagedObjectContext
* NSFetchedResultsController
* Lecture notes
Lab 06
7 Mar 02   * Quiz 3
* Draft project proposals
* Multi-touch; UIResponder
* Instruments
* Conway and Hillegass (BNR) Ch 17

Mar 09

Spring Break

8 Mar 16   * Networking using Bonjour
* Using Sockets
* Conway and Hillegass (BNR) Ch 24, Ch 25
* iPhone Cool Projects (ICP) Ch 2
9 Mar 23 Last day to declare CR/NC
or withdraw with a "W"
(Mar 25)
* Project discussions
* CoreAnimation
* Layers and Animation
10 Mar 30   Lab 08
11 Apr 06   Guest speaker: André Behrens, NY Times
NY Times Skimmer
Lab 09
12 Apr 13   Lab 10
13 Apr 20   Lab 11
14 Apr 27   * Final project demos


Your overall grade in the course will be determined as follows:
65%Labs and final project
15%Participation and Attendance
10%Peer evaluations

Policy on Lab Assignments

Lab assignments will typically be assigned in lab on Thursday and be due the following Wednesday morning. You are strongly encouraged to start early and ask questions early if you get stuck.

Because we will discuss the solutions to lab assignments in class, late assignments will not normally be accepted; however, special exceptions can be made if you contact me well in advance of the deadline. Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Some labs may take a considerable amount of time, so you are strongly encouraged to begin working on assignments well before the due date.

Programming Language

Completing the lab requires using the latest version of Xcode (version 3.2.5 as of Jan 17) which can only be installed on a Mac. For many of you, this means you will need to use Science Center 256 to complete your work. SC256 is used for many classes, so it may not be free at certain times of the day or night. Plan accordingly.

All lab assignments will be written in Objective-C using Xcode. Over the course of the semester, we will develop a set of best practices that you will use for your lab work. Xcode and Objective-C combine to help you write legible code. At a minimum, your code must be readable by me and by the other students in the class. Further requirements will be added as we progress through the semester.

Hand-in and Version Control

You will turn in all of your code to a git repository which will be accessible to you, your project partner(s), and me. A cron job will automatically retrieve the contents of your git repository at the time the project is due. A full explanation of how to use git for the course is available here: git documentation

Quiz Policy

Quizzes will be given at the beginning of class on the days posted in the Announcements section of the Schedule. Please look over these dates carefully and contact me well in advance if you cannot be in class for a quiz. If you are not present at the start of class on the day of a quiz, but make it to class before the end, then you may take the quiz. Otherwise you will receive a zero for that quiz.

Academic Integrity

Academic honesty is required in all work you submit to be graded.

You will be working very closely with a partner, and you will be working more loosely with a group of 4-6 other students. We will also be working together to help design and implement software. When you turn in Xcode project, it will naturally be the product of both your work and the input of others in the class. However, when you turn in the project, the majority of the work in the project will be yours.

For some implementations, you may find partial solutions to your problem online. This is also acceptable, but you should include a citation to where you found the solution in your code. You should not be using code you find online to write large portions of a class or interfaces; rather, it should serve as a guide for particular areas where you might be stuck.

Please see me if there are any questions about what is permissible.

Academic Accomodations

Academic accommodations are available for students with disabilities who are registered with Student Disability Services in the Dean's office. Students in need of disability accommodations should schedule an appointment with me early in the semester to discuss accommodations for this course that have been approved by the Dean's office. All requests must come through an accommodation letter from the Dean's office. To receive an accommodation for a course activity, your meeting with me must be at least one week prior to the activity.

Contact Tracey Rush at the Dean's office and follow these steps for obtaining accommodations.

From developer.apple.com: Other links: