CSCI S-65G Introduction to Mobile Application Development Using Swift and iOS
This course introduces the basics of contemporary mobile application development using Apple's iOS technology as the development platform. The main requirement of the course is to build a functioning application in iOS. Each week of class covers a different aspect of development which is used in the final project. We begin with a discussion of UI layout, constraints and programming for devices of various sizes and aspect ratios, making extensive use of Apple's Interface Builder technology. Next we discuss the major features of the Swift programming language and its standard library, along with basic use of the Xcode IDE for Swift development. Basic language features are covered lightly so that extensive discussion may be focused on differentiating features of the language including closures, optionals, the Swift type system (tuple/enum/struct/class/func), and generics. Special attention is paid to functional programming concepts such as map/reduce. Then we extend the programming model to incorporate the Cocoa Touch framework (for both the iPhone and iPad). Specific Cocoa Touch features include Apple's model/view/controller paradigm and supporting classes, event handling, Core Graphics, and the UIKit. Frequent small assignments progress from basic programming to realistic app development with a focus on responsive device graphics and algorithms. Code design and architecture are emphasized.