CS 4962 - Mobile Application Programming
Instruction
Instructor: Lorenzo Swank
Teaching Assistant: Kevin Wong (e-mail the class list)
Instructor Office Hours: By appointment, but usually available after class.
Course Contact
Website: http://www.eng.utah.edu/~cs4962/
Administrative: L.Swank at utah.edu
Prerequisites:
CS 3505 or Equiv.
Course Material:
Introduction to mobile programming, Objective-C language syntax, memory management, static code analysis, custom classes, computer graphics, mobile application life-cycles, Model-View-Controller design patterns, designing for re-use, web service integration, RESTful web services, hardware interaction, power as a first-order design constraint, and source code management with Git.
Course Outcomes:
At the conclusion of CS 4962 students should be able to:
1. Design and implement applications on a mobile device using the model-view-controller design pattern.
2. Understand and be able to quantify the effects of different software design decisions on mobile device battery life.
3. Design and implement self-contained, reusable user interface elements that meet or exceed the design criteria of existing industry standard user interface libraries.
4. Possibly make back their tuition money for this course from the work they do during the course of this semester.
Class Discussion:
Class discussion will take place on the course mailing list. Please go to https://sympa.eng.utah.edu/sympa/info/cs4962-ios to submit a request to join the mailing list. All class announcements will take place through the mailing list.
Development Tools on Campus:
The Marriott Library Mac Group has been very kind hosting our courses for the past few years. We are very grateful to Richard Glaser and James Reynolds who make sure that the Marriott Library lab machines are up to date with the latest versions of Xcode. We strongly recommend having access to an Apple laptop or desktop computer at home.
What To Expect:
The semester will start out with four traditional homework assignments. After completing those, your work for the remainder of the semester will consist of a final project. You will have two milestones for your final project where you will demonstrate measurable progress toward timely completion of your final project.
There will be no final exam for the course, and final project presentations will take place on the last day of class. There will be nothing during the slot reserved for finals for this course.
Homework
There will be four homework programming assignments at the beginning of the semester to help you get your feet wet. These assignments are very important to get done on time and out of the way. We will help you with that by accepting no late homework. Homework is due at the beginning of class. If you cannot make it to class for any reason, please make arrangements to turn in the homework before the deadline.
In order to promote excellent code quality, your assignments shall follow the CS 4962 Source Code Style Guide. Students will turn in homework using handin on the CADE machines.
Grading:
Homework Assignments 50%
Final Project and Milestones 50%
Extra Credit
You can get extra credit by going above and beyond the call of duty in your assignments. It is much better to simply become an app-store millionaire, however. If you're an app-store millionaire, no one really cares what grade you got in your Mobile Application Programming class. The teaching staff highly recommends becoming an app-store millionaire.
Cheating Policy: Just don't
Here are some things that constitute cheating in this class:
1) Copying someone else's work on an assignment. If you see another student's written homework or source code, make a note on your homework or source code. Honesty is among our greatest of virtues. You will not be penalized for this.
2) Copying things (anything) from a book, the Internet, a source code repository, etc. We live in a very open world where it is easy to find examples of source code from other places. It is OK to use third party toolkits, widgets that are open source and live on Github, and others' libraries. Most of what you will be learning this semester will come from the industry's extensive API collection, and we don't expect you to rewrite a Unicode string library just so that you can say that it is yours. What we do expect is that the core logic, the UI code, and the majority of the functionality come from you. Open source widgets and UI elements almost always require that you re-print their licenses. Some third party toolkits do not. Disclosure of use of outside sources is academic honesty. (Disclosure: I modified this syllabus from one from Dr. Furse in 2012. See how easy disclosure is?) In this course, we will require that each project has a .LICENSE file that contains all of the licenses of anything that you have used, as well as your own license. We don't want you to re-invent the wheel. We do want you to create something by the end of the semester that is substantial and that you can be proud of. One of the reasons that you will be proud of it is because it will be yours. If it's not . . .
What happens if you cheat?
Under the University of Utah policy (http://www.saff.utah.edu/code.html), you could receive an E in the class, be suspended from school, be fined, or be expelled from the University of Utah. Some of these things have happened to previous students taking this course. I want you to know that we are dead serious. Don't cheat.
What happens if someone else cheats?
It will lower your grade, statistically speaking. Please tell us (anonymously is fine) if you see instances of cheating in this or any other class. We will take care of it.
Now, Here's the Good Part
This class is all for you. There are a couple of topics that we feel really strongly about and that we're just not going to be able to live without teaching you. We know we'd be doing a great disservice to you if we didn't cover our pedagogical bases such as static code analysis, model-view-controller (and similar) design paradigms, and going on about power as a first order constraint.
Mobile programming is very enjoyable, and the reason that we've been at it since the beginning both in an academic setting and in a commercial setting is because it's just so much fun. The mobile industry is growing, and it doesn't show any signs of slowing down any time soon. Mobile programming is a great place for you to learn some more of the theory behind great computer science as well as to apply the things that you have already learned. Previous students have sold their final projects for money, and it is our hope that you, too, might be lucky enough to stumble upon a project that pays for your degree.
Boilerplate Policy Information
The information in the College of Engineering Guidelines document provides important policy information about grade appeals, withdrawal procedures, information about the Americans with Disabilities Act, and other things that are important to a small subset of people who might otherwise complain that we didn't post them. I encourage you to read them. It will give you dreams of filling out endless pages of paperwork, which ranks up there with that dream I had about trying to increase my 'sneak' skill in Skyrim by gently tossing a bean bag at a bowling pin for hours without making a sound or knocking over the bowling pin. That particular dream bored me to wake. The College of Engineering Guidelines for Spring 2013 might be slightly more interesting than that.
A MESSAGE FROM THE UNDERGRADUATE CURRICULUM COMMITTEE
From Kelly Olson: "The undergraduate committee has decided [. . .] that only one of the two mobile programming courses will count as an elective. So, please make this very clear in your syllabus and on the first day of class, that if they have already received credit for the Android class, they may not receive CS elective credit for the iPhone course. This includes registering for the course under an independent study number."
