CSCI 251 : iPhone Application Programming
General Information
Class Meetings: MTWRF 1:25-3:25 Parmly 405
Professor: Simon D. Levy Office hours: MTWRF 11:15-12:10 or by appointment |
Textbook: Alasdair Allan, Learning iOS Programming, (2nd Edition) O’Reilly, 2012.
Overview
In this course students will learn how to develop programs for Apple iOS devices (iPhone / iPad / iPod Touch), the most popular smart-phone platform in use today. Classroom lectures on the Objective-C language and CocoaTouch framework environment will be supplemented by extensive hands-on programming assignments, leading to an independent application project of the student’s devising. There may also be guest lectures from experts in other areas (business, economics) on issues surrounding the App Store‘s novel business model. The course will culminate with a presentation of each student’s application, and an optional upload to the iPhone App Store to see how well the application sells.
Objectives
After taking this course, you should be able to
- Develop (and sell) your own iOS application
- Write programs in the ObjectiveC programming language
- Use the Xcode Integrated Development Environment (IDE), InterfaceBuilder (IB), and Cocoa Application Programming Interface (API) to develop other kinds of applications for the Mac.
Prerequisites
CSCI 112 or equivalent object-oriented programming experience as approved by instructor (e.g. PHYS/ENG 255, a year of high-school AP-level coursework in the Java, C++, or Python programming languages). The language and tools used in this course are very unlikely to have been used by any of the students before, so there will be a “level playing field” for CSCI majors and non-majors.
Structure
Each two-hour meeting will consist of approximately one hour of lecture/discussion followed by an hour of working on apps from the textbook. As the term progresses, the balance will shift away from lecture and toward programming work. Students will work on their own for the textbook apps, but for the final project I encourage you to work in teams (ideally three or four people). For the final project I will each team member to give an estimate of their own contribution and that of the other members, to help ensure equal participation and fairness. As in any programming-intensive course, students should expect to spend a significant amount of time outside class working on their programs.
Participation and Attendance
Because this is an intensive course, the only one you will be taking, I expect you to attend the full class session every day. I will drop your final grade by a half letter for each class beyond two that you miss without a good reason (medical or family emergency, job interview, athletic competition). I view this class more as an atelier (workshop) than a formal course: the goal is not just learning but also producing something of value to others. This makes your full engagement and participation in the work of the utmost importance. Although you will likely be working in a team on your final projects, I will discourage “free riding” by basing your grade on anonymous assessments from yourself and your team members about each member’s contribution.
Course Blog
I encourage you to use the course blog as a way of sharing helpful tips and tricks for coding in ObjectiveC, or anything else that you think might benefit the class. Useful contributions to the blog will count as class participation in your final grade.
Grading
- Weekly quizzes: 40%
- Weekly projects: 35%
- Final project: 20%
- Participation / blogging: 5%
The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60 F.
Late Policy
Because of the severe time constraints of an intensive four-week term, and because of my desire to provide a real-world software development experience, no late work will be accepted. This means that, as in the real world, you may have to (1) rely on your team members to carry the final project to completion if you get sick or experience some other emergency; (2) turn in an imperfect or incomplete version of a program that does some minimal amount of work without failing completely. As in the real world, you will get no credit for the amount of time you put in; instead, you must get something working, even if it is just a “toy” version of the real thing. In this case, you should include a brief TODO document detailing the features you provide, and what remains to be done.
Writing component
Though the primary goal of this course is to build things, I want you to appreciate the communication and documentation skills that go into any successful software project. Hence, I will encourage and reward well-commented code, and I will ask each team to produce a little user manual for their final project app. The manual will be evaluated in part by how easily students from other teams can use it to understand and enjoy your app.
Tentative Schedule of Topics, with Online Notes
All assignments are due (as zipped email attachments) midnight of the due date. Much of the work will come directly from the book, so I encourage you to keep up with the readings, allowing you to get right to work when you’re in class.
Monday |
Tuesday |
Wednesday |
Thursday |
Friday |
|
23 April Week 1 |
Course intro. | Lecture #1: Welcome to Planet Apple
Reading: Chapters 1-3 Task: Your first iPhone App |
Guest lecture: Model/View/Controller by Prof. Ken Lambert Reading: Chapters 1-3 Task: Your first iPhone App |
Reading: Chapters 4-5
Task: Assignment #1 |
Lecture #2: Coding Objective-C
Task: Assignment #1 Due: Assignment #1 Quiz #1 |
30 April Week 2 |
Lecture #2: Coding Objective-C
Reading: Chapter 6 Task: Assignment #2 |
Lecture #2: Coding Objective-C
Reading: Chapter 6 Task: Assignment #2 |
Reading: Chapter 6
Task: Assignment #2 |
Task: Assignment #2 | Lecture #2: Coding Objective-C
Reading: Chapter 6 Task: Assignment #2 Due: Assignment #2 Quiz #2 |
07 May Week 3 |
Lecture #2: Coding Objective-C
Reading: Chapter 7 Task: Assignment #3 |
Lecture #2: Coding Objective-C
Reading: Chapter 7 Task: Assignment #3 |
Lecture #2: Coding Objective-C
Reading: Chapter 7 Task: Assignment #3 |
Lecture #3: Handling Data | Due: Assignment #3
Quiz #3 |
14 May Week 4 |
Guest lecture by Prof. Renée Pratt
Task: Final Project |
Lecture #3: Handling Data
Task: Final Project |
Lecture #3: Handling Data
Task: Final Project |
Lecture #3: Handling Data
Task: Final Project |
Spring-Term Fair, Cannan Green
Due: Final Project Quiz #4 |