Course Number: CMSC 491: Special Topics in Computer Science — Section 5-LEC(4533)
Course Topic: iPhone and iPod touch Development
Time/Place: Tuesday & Thursday 5:30–6:45pm, ACIV 013
Course Webpage: https://cs491f09.wordpress.com/
Instructor: Daniel J. Hood
Office: ITE 211 (map)
Office Hours: Tuesday & Thursday 7–8pm, or by appointment
This course provides an in-depth study of the design, development and publication of object-oriented applications for the iPhone and iPod touch platforms using the Apple SDK. Students will learn to utilize Objective-C and the various SDK frameworks to build iPhone & iPod touch applications under Mac OSX.
Prerequisites: CMSC 341 — Data Structures
Recommended: Competency in C or C++ (pointers, memory management, etc.)
At the conclusion of this course, you will
- Gain an understanding of the Objective-C language
- Become familiar with the Apple development tools
- Understand and apply design patterns in order to build mobile applications
- Understand and utilize hardware emerging in today’s mobile devices
- Be able to utilize core frameworks for the iPhone and iPod touch
- Understand and demonstrate knowledge about the complexities and challenges of developing for a mobile platform
Class will consist primarily of lecture heavily supplemented by working, downloadable code examples. Students are encouraged to either print out or follow the lectures online during class. Students are also encouraged to download, execute and modify examples presented in lecture. Questions and discussion on topics are encouraged and are welcomed at any time.
The class webpage listed above is a vital resource for this class. Assignments, information, references and announcements will be listed here. Students should ensure they have regular access to the web page and make a point to check it frequently, it will be updated often. Lecture notes will be posted to the web as available and may be frequently updated, students are encouraged to print them out and bring them to lecture.
An RSS feed is available for the course pages so you can subscribe in your favorite feed reader (such as Google Reader). This RSS feed is available at: https://cs491f09.wordpress.com/feed/.
Please notify the instructor if problems or typos are encountered when trying to access the course homepage.
Students are expected to regularly attend lecture, ask questions and participate in discussion of course topics.
Questions, Concerns and Special Needs
Students are encouraged to ask questions of the instructor for clarification of any policies or class procedures at any time. Students are encouraged to notify the instructor as soon as possible if they have any special needs the instructor should be aware of.
Please be respectful of your Instructor and peers. This includes…
- Arriving on time and remaining for the full lecture.
- Refraining from talking during lecture.
- Setting cell phones to vibrate or silent. If you forget and it starts going off in class please turn it off. Continuing to let it ring is far more annoying that taking a moment to turn it off. If you absolutely must answer your cell phone in the middle of class, leave the room before taking the call.
- Using laptops in an appropriate manner. Answering email, instant messaging, working on assignments and playing games are all inappropriate things to be doing during class. If your laptop use becomes distracting you will be asked to discontinue its use.
There is no required textbook for this course — though if you are interested in purchasing an iPhone development book, I’d strongly recommend “iPhone SDK Development” by Bill Dudney and Chris Adamson.
In lieu of a required text, we’ll instead rely heavily on the documentation provided by Apple. Most of the relevant documentation can be found on Apple’s iPhone Dev Center website at: http://developer.apple.com/iphone/.
Students are also expected to review lecture notes for every class. Course notes and Apple documentation will be supplemented by various papers and online materials where appropriate.
There will be approximately 8-10 week-long assignments throughout the semester. These assignments will test your ability to apply the concepts taught in class to implement iPhone and iPod touch applications. Your projects will be graded on the following criteria:
- Correctness of application
- Appearance of application
- Adherence to Objective-C and iPhone coding conventions
- Neatly formatted and indented code
- Well documented header files
- Absence of significant performance issues
- Absence of memory leaks
All of these week-long projects will be weighted equally.
Assignments will be due before midnight (1 minute after 11:59pm) the evening of the due date. Electronic submission of assignments is required and will be explained in class.
Each student will be given 3 free late days to be used at their discretion for projects throughout the semester. You may choose to use all 3 late days on a given assignment, or split them up among several assignments — the choice is yours. To claim a “free late” you must email the instructor before midnight on the due date asking to use a free late day. If you wish to utilize an additional free late day, you must request an additional free late day via email before midnight.
The 3 free late days may not be applied towards any of the final project deliverables. The free lates may only be used towards the weekly assignments.
In lieu of a final exam, you will be expected to complete a final project of significant depth and breadth which is worthy of being submitted to the app store. You may work on this final project individually or in pairs. Your app should strive to be interesting, novel, and unique. With over 65,000 apps on the store this may seem like a daunting task, especially if someone has already implemented your idea. However, if there already exists an app for your idea, think about how you can differentiate your app to make it stand out.
There will be several deliverables for this final project — the approximate dates are listed below:
- October 1st — Paragraph description of app, team identification
- October 20th — Proposed iPhone App presentations
- November 3rd — Detailed project proposal/presentation including overall app flow/features, screen mockups, identified APIs, etc.
- December 14th — Submission of final app source code
- December 17th — Final project app presentations (during time allocated for final exam)
Your overall final project grade will be based not only on your final application (which itself is graded on originality as well as the criteria for the week-long projects), but also on the quality of your app description, the detailed project proposal, and the final oral presentations.
Additional details for each of these deliverables will be provided as these due dates near.
Your grade for this course will be based upon weekly programming projects as well as your final project.
Your final letter grade is based on the standard formula: F < 60, 60 ≤ D < 70, 70 ≤ C < 80, 80 ≤ B < 90, 90 ≤ A
If you have a concern about a grade (i.e. you are looking for more points back) on an assignment, you have 1 week from the date that the assignment is returned to make arrangements to discuss your situation. After 1 week, it is assumed that you accept your grade and it becomes final.
By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC’s scholarly community in which everyone’s academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory
Cheating in any form will not be tolerated. Instances of cheating will be reported to the UMBC Academic Conduct Committee. These reports are filed by the Committee and can be used for disciplinary action such as a permanent record on your transcript. Academic honesty is absolutely required of you. You are expected to be honest yourself and to report any cases of dishonesty you see among other students in this class. Reports of dishonest behavior will be kept anonymous. If you ever have a question about cheating in this course, please ask the instructor about it. Ignorance about the cheating policy is not a defense after the fact.
A returned grade on an assignment is not acknowledgment of no wrong doing. If evidence of academic misconduct is discovered after a grade is assigned, it will be revised accordingly.
Weekly Project Policy
It is never permitted to copy code from someone else nor to provide code to someone else. This applies to both hard-copy and soft-copy forms of the code in whole or in part. Having someone else’s work in your possession or giving your work to someone else in any form, even briefly, is dishonest.
The following is a non-exhaustive list of violations of academic integrity:
- Emailing code in whole or in part
- Instant Messaging code in whole or in part
- Posting or obtaining code in whole or in part on the web including but not limited to forums, newsgroups, etc…
- Using free or open-source software without prior consent
- Not taking the appropriate measures to protect your source code, including:
- Placing your code in a public directory
- Failing to lock your screen when away from your computer
- Allowing someone to copy code from your monitor
The penalty for violation of this policy (single offense) is three-fold:
- A project grade of zero
- A 10% reduction of your semester average (one letter grade)
- Actions reported to the Academic Conduct Committee
Multiple violations will result in automatic failure of the course.
The online schedule will be updated (based on class progress) to contain the most recent version of the schedule of topics, project due dates, and other significant dates. The schedule can be found at: https://cs491f09.wordpress.com/schedule/.
Thanks to Stanford for making their iPhone Application Programming course materials publicly available on the web. Special thanks to those that taught that course: Evan Doll, Alan Cannistraro & Paul Marcos.
Some course materials have been adapted from these sources.