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 covers a different aspect of development which is used in the final project. We begin with the major features of the Swift programming language and its standard library along with basic use of the Xcode integrated development environment (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 aspects of functional reactive programming using Apple's Combine platform. We complete the non-user interface (UI) portion of the course with an extended discussion of correct application architecture using a unidirectional dataflow model. Next we focus on Apple's SwiftUI framework focusing on view composition layout event handling and various graphics techniques. We complete the UI portion of the course with an extensive discussion of animation and fluid user interface design making extensive use of Apple's Preview technology. Frequent small assignments progress from basic programming to realistic application development with a focus on responsive device graphics and algorithms. Code design and architecture are emphasized.
Harvard Division of Continuing Education