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.
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:
|WEEK||DAY||ANNOUNCEMENTS||TOPIC & READING||LABS|
|1||Jan 19||In class demos
|* Admistrative tasks
* Xcode, Cocoa Touch, and iOS
* Objective-C basics
* Demo: Dice
|2||Jan 26||Drop/Add ends (Jan 28)||* Git review
* Models, Views, and Controllers (MVC)
* Demo: Hangman
* Learn Objective-C at cocadevcentral.com
|3||Feb 02||* View Based vs Window Based Apps
* Writing a custom view
* Demo: Tab Bar application
* Quiz 1
|4||Feb 09||* UINavigationController
* dataSource vs. delegate
|5||Feb 16||* Quiz 2
* Keyboard and resignFirstResponder
* iPad and UISplitViewController
* NSGestureRecognizer and swipe
|6||Feb 23||* Core Data
* Entities, attributes, relations
* NSManagedObject, NSManagedObjectContext
* Lecture notes
|7||Mar 02||* Quiz 3
* Draft project proposals
* Multi-touch; UIResponder
* Conway and Hillegass (BNR) Ch 17
|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"
|* Project discussions
* Layers and Animation
|10||Mar 30||Lab 08|
|11||Apr 06||Guest speaker: André Behrens, NY Times
NY Times Skimmer
|12||Apr 13||Lab 10|
|13||Apr 20||Lab 11|
|14||Apr 27||* Final project demos
|65%||Labs and final project|
|15%||Participation and Attendance|
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.
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.
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
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 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.
Contact Tracey Rush at the Dean's office and follow these steps for obtaining accommodations.