CSCI 251 : iPhone Application Programming
Class Meetings: MTWRF 1:25-3:25
Learning iOS Programming, (2nd Edition) O'Reilly, 2012.
In this course students will learn how to develop programs for Apple
(iPhone / iPad / iPod Touch), the most popular smart-phone platform in use today.
Classroom lectures on the
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
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.
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.
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.
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
(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.
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.
- 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.
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.
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