Table of Contents
Introduction
In the current offering of the course, we will focus on developing apps for Android platform using Java. Reasonable proficiency in Java, version controling, UML, and software engineering principles is assumed. Students will be guided through setting up Android Studio and related tools. Through sample apps, students will be exposed to basic concepts of Android apps like Activities and Fragments. Then, building upon those concepts, we will introduce handling data, networking, sensors, etc. Alongside, we will also talk about addressing enterprise requirements in mobile applications, like performance, scalability, testability, accessibility.
Syllabus
Course modules
We will add modules as the semester progresses.
Introduction
3 class hours Lectures and notes Course introduction Slides Android Platform Slides Part 1 Part 2 Part 3
Java/OOP Overview
Android Studio Basics
1 class hour Lectures and notes Slides Part 1 Part 2
App Basics
1 class hour Lectures and notes Slides - app basics Slides - Gradle Layouts Activity, Resources Manifests Build process
Testing
1.5 class hours Lectures and notes Slides TDD and basic setup Your first test case Instrumented UI tests Stress testing using Monkey
Accessibility
2 class hours Lectures and notes Slides Guest lecture by Adv. Uday Warunjikar Introduction to accessibility Using TalkBack for manual testing Using Accessibility scanner
Activity Lifecycle
2.5 class hours Setting the stage Slides Video 1 Video 2 Lifecycle Methods Slides Video 3 Video 4 Video 5 Persist data using ViewModel Slides Video 6 Video 7
Intents
2 class hours Slides and videos Slides Intents basics Launching a second activity Getting result from the launched activity Understanding the back stack and handling the back button Implicit intent example
Persistent Data
2 class hours Slides and videos Slides Shared Preferences Intro to the Room Library Room Database Android Thread Model and Architecture Components Putting it together in the Journal app
Fragments and Navigation Component
1.5 class hours Slides and videos Fragments Slides Part 1 Part 2 Navigation Component Slides Part 1 Part 2
Services and Background Tasks
3 class hours Foreground Services slides Part 1: Services and Notifications Part 2: Broadcasts Background Tasks slides Part 1: background basics and work manager Part 2: Work Manager Constraints Part 3: Alarm Manager
UI
TBA class hours Slides and videos TBA
Firebase
1 class hours Slides and videos Slides
Miscellaneous Topics
5 class hours Menubar and Dialogs slides Permissions slides Content Providers slides Part 1 Part 2 Settings slides Sensors, location, identity slides Part 1 Part 2 Part 3
Crossplatform Development
TBA class hours Slides and videos TBA
FAQs
What are the prerequisites?
Reasonable proficiency in Java, git, UML, and software engineering principles.
If you believe you are not proficient in one or more of these, please talk to me ASAP.
Can non-CS majors take this course?
A limited number of seats are available for non-CS majors. You can enroll in this course as long as you fulfill the prerequisites.
Keep in mind this is a programming-heavy course. If you can handle that, you will enjoy this course.
Is this course offered every semester?
No. It may be offered once a year.
Do we need a specific OS or environment for the assignments?
Android apps can be developed on Windows, macOS, or Linux machines. You can test your apps using device emulators - a physical android device is recommended but not required.
Can I audit this course?
According to the Academic Undergraduate Studies division, “[This] is not an audit course. A student can attend the lectures etc. but no grade or entry in the Transcript will be made.”
All lectures are available on the course website. Students can watch those as and when they like.
Can you increase the number of seats?
Since this course has a heavy programming component, the number of available seats is limited. I am not able to increase that number once the registration process has started. I hope you can take this course in the next offering.