Date |
Topic |
Assignments |
Mon 01/15 |
Kotlin resources
(Java review slides below)
|
Course summary slides
From Java to Kotlin quick examples
Kotlin basic syntax
Kotlin cheatsheat
Kotlin Koans
Kotlin by example
Kotlin's let, apply, also, with and run functions (and VIDEO)
Kotlin idioms
Kotlin nested and inner classes
Kotlin docs
Android studio will convert Java files and pasted Java code to Kotlin
|
Mon 01/15 |
Course slides
|
Course summary slides
Android SQLite
Dealing with JSON
Maps
|
Tue 01/16 |
Course Intro, Kotlin introduction, App overview
|
HW: What are your goals for this course? (undergrad course only)
What is Android?
For course videos, feel free to listen at 1.25x or 1.5x, the Global Speed controller plugin for Chrome gives you even more control
Video: Creating a simple Android app in Kotlin
Video (older, screen only): Creating a simple Android app in Kotlin
Screen Video: How to use Android studio and debugging tips
Video: Philosophy of learning programming
|
Thu 01/18 |
GUI widgets and layout
|
HW due one minute before noon -- What are your goals for this course (in canvas)?
HW 0 out (see canvas)
HW 1 (Peck) (in canvas)
Video demo of Homework 1 Peck
Android Docs: Constraint Layout
External: Constraint layout chains
Android Docs: View Binding
Video: Widgets
Video tutorial: Linear and Constraint layouts
Video tutorial: Icons and Images
|
Tue 01/23 |
Android idioms in Kotlin. Lambdas. Debugging.
|
HW 0 due 12:30pm
Video: Lambda functions in Kotlin
Video: Basic View Binding
Video: View Binding (Demo)
Video: Andriod history: Finding views
Video: Short tour of a gradle file
|
Thu 01/25 |
Flipped classroom - Layout
|
Watch the video and look at web pages BEFORE class
Video: Layout flipped classroom (FC0 - layout) requirements
Android Docs: Linear Layout
Android Docs: Linear Layout weights
Android Docs: Constraint Layout details
External Constraint Layout Tutorial
|
Tue 01/30 |
Implicit and explicit intents. Activities and their lifecycle.
|
Android Docs: Implicit intents
Video: Implicit intents
Android Docs: Activity lifecycle
Android Docs: Intents
Android Docs: Intent with result
Android Docs: addMenuProvider
Video tutorial: Explicit intent example
|
Thu 02/01 |
Flipped classroom - Activities and Intents
|
Watch the video BEFORE class
Video: FC1 - Intents and activities
Video: older FC1 that goes over the code more
|
Fri 02/02 |
|
HW 2 Fling out (in canvas)
Video demo of HW 2 Fling
|
Tue 02/06 |
Recycler view
|
Video: RecyclerView slides
Video: RecyclerView code walk through part 1
Video: RecyclerView code walk through part 2 (Adapter)
Video: RecyclerViewDiff code walk through
Android docs: RecyclerView
External: Recycler View parts and functionality
|
Wed 02/07 |
|
Homework 1 Peck due at 11:59pm
|
Thu 02/08 |
Flipped classroom - RecyclerView
|
Video RecyclerView Flipped classroom demo
Video: RecyclerView and ViewHolder
External tutorial on RecyclerView
Android Docs: RecylerView and Cards
External page on RecylerView and ViewHolder and ViewBinding
|
Tue 02/13 |
Fragments, ViewModel, Navigation
|
Android Docs: Fragments
ViewModel Overview
Video: Fragments, Navigation, ViewModel for recycler view lists
Android docs: Navigation getting started
Android docs: NavigationUI
|
Thu 02/15 |
Flipped classroom - Fragments and Navigation
|
Video: Fragment flipped classroom
Android docs: Navigation getting started
Android docs: Navigate to a destination
Android docs: SafeArgs example
|
Tue 02/20 |
ViewModel, LiveData, Model-View-Viewmodel (MVVM)
|
Screen video: FilterClock demo
Android docs: LiveData overview
External LiveData
External MVVM on Android
Android docs: Guide to app architecture
|
Wed 02/21 |
|
HW 2 Fling due at 11:59pm
HW 3 Music Player out (in canvas)
Screen Video: HW 3 media player demo
|
Thu 02/22 |
Flipped classroom - ViewModel and LiveData
|
Video: FC LiveData and ViewModel demo
Video: Coroutines and Handler/Runnable (AbsurdClock)
|
Tue 02/27 |
Network services - Retrofit, JSON
|
Public APIs
Using Kotlin coroutines with architecture components
External Retrofit and Kotlin coroutines
JSON pretty printer
|
Thu 02/29 |
Flipped classroom - network services
|
Video: trivia game demo and background
Video: JSON tools
|
Tue 03/05 |
Firebase authentication and Firestore
|
|
Wed 03/06 |
|
Homework 3 Music player due at 11:59pm
HW 4 Tetrominoes out (in canvas)
Video: HW4 Demo
Video: Overriding onDraw of a View (DemoDraw)
|
Thu 03/07 |
Flipped classroom - Firebase Authentication
|
Key Principles of Software Architecture
Video: FC firebase demo
Firebase UI for authentication
  older Video: FC firebase console setup
  older Video: FC firebase user setup and demo
    older older Video: SHA-1 certificate fingerprint generation for Android
|
Tue 03/12 |
Spring break
|
|
Thu 03/14 |
Spring break
|
|
Mon 03/18 |
Project demo signup (in-person only)
|
Please sign up now for your project demo on 4/4 (in-person only)
|
Tue 03/19 |
Databases and SQL
|
Relational database and SQL background
SQLite on Android, ContentValues, Cursor, column data (slides)
Design principles for an Android app that interacts with a database
Demo of the Notebook app
The data model for Notebook (with sqlite3 demo)
Code walkthrough of the Notebook app
Implementing ImageRoll in Notebook
SQLiteOpenHelper code walkthrough in Notebook
How to take pictures in Android (slides)
How to take pictures in Android (code)
Android Docs: SQLiteDatabase
External: SQLite tutorial
|
Wed 03/20 |
|
HW 5 Reddit out (in canvas)
Screen video: HW5 Reddit demo
|
Thu 03/21 |
Flipped classroom - SQL
|
Video: SQL FC Demo, including sqlite3
|
Fri 03/22 |
|
Project Ideas Due at start of class
|
Tue 03/26 |
Firestore
|
Referential integrity for Notebook and FireNote
Getting started with Google's Firestore
FireNote functionality demo
The data model for FireNote (with Firebase console demo)
Firebase Storage in FireNote
Code walkthrough of FireNote app
Implementing ImageRoll in FireNote
Most of these links are just the first of a series of pages well worth reading
Firestore
Firestore storage
FirebaseUI
|
Wed 03/27 |
|
Homework 4 Tetrominoes due at 11:59pm
|
Thu 03/28 |
Flipped classroom - Photo list
|
Photolist demo
Screen video explaining the data model for the flipped classroom
|
Fri 03/29 |
Anonymous peer review
|
Anonymous peer review due at 11:59pm
|
Tue 04/02 |
Maps
|
Video: Tutorial on Goole maps in Android
Android map docs
Getting an API key
Watch out for billing
|
Thu 04/04 |
Flipped classroom - Maps
|
PROJECT DEMO (in-person only)
Video: Maps flipped classroom demo
Android docs: Signing apps
Video: Generating a Google API key and using it for maps
Android Docs: Geocoder
MapFragment
|
Tue 04/09 |
Databases, comparing Notebook with FireNote
|
Video: Hex demo
Video: Hex data model
Sign up here for final demo
|
Wed 04/10 |
HW5 Due
|
Homework 5 Reddit due at 11:59pm
|
Thu 04/11 |
Catch up, Brent Waters guest lecture
|
|
Tue 04/16 |
Persistent state, shared preferences
|
Video: Saving state in Android
Data and file storage overview
Android docs: Saving UI states
Android docs: Saved state module for ViewModel
Android: Files
All the things we're doing wrong but take for granted: a retrospective glance at Android development
|
Thu 04/18 |
Industry talk, Claire Bingham, Emery Coxe, and Caryn from First Dollar talking about Jetpack Compose
|
|
Mon 04/22 |
Project demos 1:00-6:30pm
|
|
Tue 04/23 |
Project demos
|
|
Thu 04/25 |
Catch up, Brent Waters guest lecture
|
|
Fri 04/26 |
Write up due
|
Project writeup pdf due on canvas at 12:01pm.
|
Sat 04/27 |
Project demos 12:00pm-1:00pm
|
|