CMSI 2022

Mobile Application Development

Spring 2023

  • Brightspace: Where you can access private content and check your grades
  • We will use GitHub Classroom to manage and submit assignments
  • Every now and then we may use Socrative to ask or answer questions as a class—my Socrative room is DONDILMU
  • We continue to live in very fluid and dynamic circumstances—make sure to follow the university’s pandemic portal for the latest news, updates, and policies—to which this class must, of course, adhere


  • Assignment 0208 Standalone mobile app Setup
    1. Use Swift Playgrounds to get started with the Swift programming language
    2. Take the Introducing SwiftUI tutorial to completion (note the estimated time—this does fit the expected workload between the start of class to the due date)
    3. Follow the Unifying your GitHub and Xcode repositories instructions to merge the Xcode project with the GitHub Classroom repo
    4. Morph the tutorial code into your own “list of stuff” app
  • Assignment 0315 Generic API-backed mobile app Setup
    • Download and install the Postman desktop app so that you can interact with APIs directly in order to get to know them better without worrying about programming to them (yet)
    • Acquire your own “APIdex” for personal experimentation and exploration (it’s labeled as an “assignment” in GitHub Classroom but it’s really just a private space which demonstrates how to communicate with web services from within a SwiftUI iOS app)
    • This Prezi provides an overview of API-backed applications
    • The non-web page parts of Dr. Toal’s Invoking Web APIs page also lay some initial groundwork
    • Dr. Toal’s REST page gets a little more technical and in-depth, if you’re interested
    • You will likely want to install and get to know Postman in order to explore APIs firsthand. They also offer a web version if you prefer not to download anything but you’ll have to sign up for an account
    • For SwiftUI specificity, this Hacking with Swift tutorial provides an introductory walkthrough. Once you’ve mastered that, this one covers more sophisticated requests. Both pages are part of an overall SwiftUI app tutorial for developing something that interacts with a web service
  • Assignment 0412 Firebase-backed mobile app Setup
    • Get going hands-on with “BareBonesBlog”—another “assignment” in GitHub Classroom that is actually a sample project from which you can start learning Firebase
    • Like the APIdex Giphy portion, BareBonesBlog does not work right out of the box: to introduce you to Firebase, you will need to follow the instructions in the README—to be walked through in class—in order to get it up and running
    • The Firebase website is of course the authoritative site for all things Firebase
    • The non-web aspects of Dr. Toal’s Firebase page provides additional background and links
    • Firestore, which is one of the databases available for use with Firebase, is an entire subsystem in itself. In addition to its main website, a Getting to Know Cloud Firestore YouTube playlist is available
  • Assignment 0503 Your own mobile app Setup
    • Dr. Toal’s Project Ideation page adds structure to an otherwise open-ended process

Course Content and Useful Links

  • Run-on-device checklist:
    • Have the right cable (typically USB to Lightning)
    • Have an Apple ID and tell Xcode in Preferences > Accounts
    • Upon connecting your device, it should appear in the device dropdown and you should be able to run on it
    • Activate “Developer Mode” on your device in Settings > Privacy & Security
    • You may need to do “one more thing:” visit your device’s Settings > General > VPN & Device Management section to state that you trust the app’s developer
    • One more “one more thing:” if you get an error message that complains about the version of your iOS device, you can adjust the deployment target of your project by clicking on the uppermost node in the project tree (the one with your project name and the blue app icon), going to the Info tab, clicking on the PROJECT icon (again, the one with your project name and the blue app icon), and choosing an iOS Deployment Target that is the same as or lower than the version on your iOS device
  • Clean code notes from Dr. Toal
  • Swift/SwiftUI development (to download and install)
  • git warmup/refresher: This link gives you a repository with notes and documentation about git and GitHub, authored by GitHub. You can also use that repository to practice git commands
  • Their phone, their rules: iOS Human Interface Guidelines
  • Developer documentation and resources from the mother ship
  • Third-party iOS development resources—these are great supplements, but just note that they may not be completely up to date. This stuff changes fast, so be aware of when a resource got published
    • Stanford University was one of the first universities to offer formal training in iOS (hey they’re Stanford), and some of that content is available publicly
    • Hacking with Swift offers a range of tutorials and recipes for both learning and getting specific things done
    • Kodeco (formerly hosts both free and subscription content
    • Cocoa Dev Central is likelier to be outdated than not, but there may still be some focused tidbits here that will help