<<

Development: Android or iOS? An Experience Report from Teaching Both Platforms Gina Sprint Department of Computer Science, Gonzaga University

Mobile App Development Course Assignments/Projects Android vs. iOS

The Demand for MAD Courses Example Assignment #1: Application Programming Interfaces (APIs) Mobile App Development (MAD) has received a • Android: Google Maps SDK, location services, menus, app permissions Recommended for Android: Java (primary, older) copious amount of attention in recent years • iOS: Google Maps Places web API, Core Location, threading, searching OR Kotlin (secondary, newer) Student interest: Java-specific topics: • CNN Money naming Mobile App Developer the • Interfaces, functional interfaces “Best Job in America” in 2017 [1] • Anonymous classes • Almost all students have an iPhone or Android • Lambda expressions phone Recommended for iOS: Swift (primary, newer) Demand for jobs: OR Objective- (secondary, older) • PayScale reporting a 19% 10-year job grown for Swift-specific topics: MAD, placing it at #9 in the list of fastest-growing • Optionals, protocols jobs in America [2]. • Closures, functions as value types • High starting salaries IDE Barriers to Offering MAD Courses Android: (based on the IntelliJ Limited expertise: platform, cross-platform) • Faculty often have not taken a MAD course • (a little slower) iOS: (for Mac only) themselves Example Assignment #2: Persistent Storage • Need to learn… but how to find the time!? • Simulator (a little faster) • Android: ListViews, SQLite databases, contextual action mode, navigation • May need to hire an adjunct from industry • iOS: TableViews, Core Data, camera, image picker, navigation controller Limited resources: Fun/Relevant Topics • Requires a Mac lab or students to have Macs for • Model, View, Controller iOS development • Callbacks/event handling • Phones, tablets, smart watches, etc. may be • Delegation and data source patterns (iOS) desired for projects • Lifecyle methods and threading • SpriteKit 2D games (iOS) Student Pre-requisite Knowledge • Working with APIs MAD requires students be comfortable with: • Material design (Android) • An object-oriented programming language • CocoaPods dependency manager (iOS) • Debugging/reading stack traces MAD prefers students have exposure to: • Graphical (GUI) programming • Event-drive programming Teaching Mobile App Dev • Design patterns • APIs and frameworks Teach a MAD Course, it’s Fun!! • Integrated development environments (IDEs) Example Assignment #3: Layouts But Android or iOS? Who Wants to Take a MAD Course? • Android: Grid layout, multi-screen apps, working with images, toasts Android…probably. Android is cross-platform (you • iOS: Auto layout, linear layout, timers, working with emoji, alert dialogs A diverse group of students, including: don’t have to purchase/require Macs), uses Java so • Primarily CS Majors and CS Minors you can start writing apps quicker (don’t need to • Some business students teach a new language, can rely on Java/C++ pre- • Some science students requisite knowledge), and is open-source. However, build issues across versions/libraries are common and the majority of students would rather learn iOS Native vs. Hybrid vs. Web because they (generally) have . It is quicker for a faculty member to learn Android development, but Apple does have a nice iOS book I recommend.

Resources to Learn My MAD course content (notes, programming assignments, etc.) is publicly available online: Android: • Materials: https://goo.gl/9X1HA1 • Code: https://github.com/GonzagaCPSC312 Example Apps: Student Projects (L->R: Android, Android, iOS, iOS, iOS) iOS: • Materials: http://goo.gl/QPE8FA • Code: https://github.com/GonzagaCPSC315 Image from [3] Great online learning resources: • Android Developer Guide [4] References • Apple’s Swift Programming Language book [1] https://adtmag.com/articles/2017/01/06/best-job-in-america.aspx [2] https://money.cnn.com/gallery/pf/2017/01/05/fastest-growing-jobs-2017/9. • Apple’s App Development with Swift book [3] https://developer.salesforce.com/page/Native,_HTML5,_or_Hybrid [4] https://developer.android.com/guide • Online courses like Udemy, Treehouse, etc.