Mobile App Development 2022W Lecture 1

From Soma-notes
Revision as of 18:17, 12 January 2022 by Soma (talk | contribs)

Video

Video from lecture is always available on Brightspace (under Resources, Zoom Meetings (Recordings, etc.)) after lecture (once Anil publishes it). It will also be posted here soon.

Notes

Topics

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)