Mobile App Development 2022W Lecture 1
Video
Video from the lecture given on January 12, 2022 is now available:
Video is also available through Brightspace (Resources->Zoom Meetings (Recordings, etc.)->Cloud Recordings tab)
Notes
Topics
- Discuss the course outline
- Getting started with Xcode
Lecture 1 --------- Participation - if you show up and answer polls for every class, but don't do anything else, you'll get a B for participation (75%) - basically, you get a 0, 1, or 2 for every class, to get a 1 you show up/answer polls, to get a 2 you ask questions or otherwise interact - remember, participation can only increase your grade, no decrease it - so do it honestly - otherwise I might have to give negative participation points I'll do 60-90 minutes of lecture each class, rest of time is for hands on time - I'll give you things to play with and I'll be around while you work on it - these things => tutorials! By the end of this class, you'll be able to make simple Android and iOS applications - they won't be very fancy - goal is to understand concepts rather than write lots of code I want you to understand every line of code you write. - it shouldn't be mysterious Think of this as a junior operating systems course oriented towards mobile development - necessary, because mobile development is complex, and if you don't understand the concepts underneath you'll never be able to make good code We will write code to build mental models We'll be working with two programming languages - Swift (iOS) - Kotlin (Android) These are the "modern" languages for iOS and Android, versus Objective-C and Java. - many similarities between Swift and Kotlin, as both are attempts to bring modern ideas about types into mobile development We'll be using 2 IDEs - Xcode - Android Studio Lots of similarities, but also differences Big question: what is the environment mobile apps run in? - what services do you get? - what are the constraints? Obvious ones: - resource constraints (RAM, storage, power/battery) - multitouch interfaces But actually the big one is app stores - how to support lots of 3rd party development securely? Lots of restrictions on what mobile apps can do - can't just download apps and run them from the Internet Desktop OSs were designed for developers first, users second Mobile OSs were designed for users first, developers second If you want to deploy apps to your phone, make sure you're using the same Apple ID in Xcode as on your phone (or iPad). iOS development is very proprietary, which I don't like. But there is hope - GNUStep Why does GNUStep have anything to do with iOS development? - because iOS development is based on MacOS development - and MacOS development is based on NeXTStep - GNUStep started off as a re-implementation of NeXTStep, and is increasingly supporting iOS (but they don't advertise it too much)