Course Information
Course Number: CMSC 491: Special Topics in Computer Science
Section: 06-LEC(11791)
Course Topic: iOS App Development
Time/Place: Tuesday & Thursday 5:30–6:45pm, Sondheim Hall 110
Course Webpage: http://cs491f10.wordpress.com/
Contact Information
Instructor: Daniel J. Hood
Email: danielhood@umbc.edu
Office: ITE 211 (map)
Office Hours: Tuesday & Thursday 7–8pm, or by appointment
Course Description
This course provides an in-depth study of the design, development and publication of object-oriented applications for iOS platforms (iPhone, iPod touch & iPad) using the Apple SDK. Students will learn to utilize Objective-C and the various SDK frameworks to build iOS applications under Mac OSX.
Prerequisites: CMSC 341 — Data Structures
Recommended: Competency in C or C++ (pointers, memory management, etc.)
Course Objective
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
- Utilize the core frameworks which are the building blocks of iOS applications
- Understand and demonstrate knowledge about the complexities and challenges of developing for a mobile platform
Course Format
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.
Course Policies
Course Web Page
The class web page 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.
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: http://cs491f10.wordpress.com/feed/.
Please notify the instructor if problems or typos are encountered when trying to access the course homepage.
Participation
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.
Classroom Etiquette
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.
Reading
There is no required textbook for this course — though if you are interested in purchasing an iPhone development book, I’d strongly recommend either of the following books…
- iPhone SDK Development by Bill Dudney and Chris Adamson
- Beginning iPhone 3 Development: Exploring the iPhone SDK by David Mark and Jeff LaMarche
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.
Assignments
Short Projects
There will be 5 short programming projects throughout the semester (about a week in length). These assignments will test your ability to apply the concepts taught in class to implement iOS 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
Late Policy
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 on the short projects throughout the semester. You may choose to use all 3 late days on a given project, or split them up among several projects — 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 free lates may only be used on the short programming projects.
Final Project
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 with a partner. Your app should strive to be interesting, novel, and unique. With hundreds of thousands of 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 exact dates will be fleshed out as the semester progresses — an approximate time-line is as follows:
- Late September — Paragraph description of app, identify teams
- Early October — Proposed iPhone App presentations
- Mid October — Detailed project plan including overall app flow/features, screen mockups, identified APIs, etc.
- Mid November — Progress report, including current source code submission
- Mid December — Submission of final app source code, mock app store submissions & presentation slides
- December 16th — Final project app presentations & demo (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 short programming projects), but also on the quality of all of your final project deliverables.
Grading
Your final course grade is split 50/50 between the short projects and your final course project. The detailed breakdown is as follows:
- Short Projects:
- 10% — Project 1
- 10% — Project 2
- 10% — Project 3
- 10% — Project 4
- 10% — Project 5
- Final Project Deliverables:
- 2% — Paragraph description of app
- 4% — Oral project proposal
- 5% — Detailed project plan
- 4% — Progress report
- 5% — Mock app store submission
- 5% — Final presentation & demo
- 25% — Final application
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.
Academic Integrity
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 of 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.
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 and attribution
- 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 display
Penalty
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.
Schedule
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 tentative schedule can be found at: http://cs491f10.wordpress.com/schedule/.
A schedule of general academic deadlines (including drop, add & withdraw dates) can be found at the Office of the Registrar’s Fall 2010 Term Dates and Deadlines. Please note that some of the deadlines have changed from what they were in past semesters.
Acknowledgments
Portions of the course notes have been adapted from other sources. Where applicable these sources have been attributed in the lecture materials.