Fast and Loose
This is a class about learning to develop code "fast" for "loose" (mobile) applications for iPhone®s and Android®s. It is not about hacking together an unmaintainable mess of spaghetti code, but about delivering high code quality at a predictable pace, through the use of modern practices in lean agile software development, including continuous integration and test-driven development.
Time and Place
This class meetings Monday, Wednesday and Friday, from 10:00am to 10:50pm, in Tech L168.
Prerequisites
Programming proficency: This is a project-based learn-by-doing course. Substantial programming and learning of new development frameworks is involved. You should feel at home programming in multiple languages and have had some experience with coding against a database. Experience with modern version control, such as svn or git, is recommended.
Mobile experience is not required.
Development computer: You need to have either a Mac or a PC suitable for software development, with the memory and space to support the requirements listed here. You'll need gigabytes of free disk space.
An iPhone™ or Android™ phone is not required.
Work can be tested in simulators. A real device is better. Simulators are slow and can't emulate all features, but they will be sufficient for the class.
The platform for development will probably be PhoneGap. The advantages of PhoneGap, and similar frameworks, such as Titanium and Rhodes, for this course are:
- You implement applications using HTML 5, CSS, and Javascript, which are good languages to get more experience in.
- You don't need to learn Objective-C, which is the native language for iPhones, but not otherwise used widely.
- Your applications can access the neat features of the phones, such as accelerometers and GPS, unlike web applications.
- If you only use features shared across phones, you can deploy the same program to multiple platforms, including the iPad.
Textbook
The mobile programming material will be from online sources, in order to be current.
The text for agile software methods is The Agile Samurai by Jonathan Rasmusson. Don't be fooled by the casual style. This is a sound summary of modern thought about agile software development.