CS 194A Android Workshop
Fall 2021
Rahul Pandey (rkpandey@cs.stanford.edu)
[Syllabus link] Learn basic, foundational techniques for developing Android mobile applications and apply those toward building a single or multi page, networked Android application.
The goal for this class is to build several Android apps together, empowering you to extend them, create your own apps, and build a portfolio.
Topics include: the Android ecosystem, introduction to Kotlin, UI elements, lists, multiple activities and intents, working with APIs, and cloud storage.
Meeting time and place
Wednesdays, 5:30 PM - 6:30 PM at Hewlett Teaching Center Rm 101
Office Hours
Thursdays, 6-7pm (Zoom link available in Canvas)
Schedule
Week 1: Introduction to Android
Week 2: Introduction to Kotlin
- Slides
- Android Studio shortcuts playlist
- Complete two Leetcode problems in Kotlin: Two Sum and Water Container
- Here's the completed code for the BiggerNumber app
Week 3: Layouts, UI, and Responding to User Input
Week 4: ImageView + RecyclerView
- Slides
- Kotlin Leetcode solutions
- (Optional) RecyclerView explanation
Week 5: Activities
Week 6: Intents
- Slides
- Guest speaker: Igor Podkhodov
Week 7: Networking
Week 8: Firebase + other topics in Android
- Slides
- Other topics covered: fragments, testing strategies, app architectures, and alternatives to pure Android development.
- YT Tutorial for EmojiStory, an Android app covering Firebase + Android.
Week 9: Panel discussion
- Our last class is a panel with Android veterans: ask them about their Android/tech journey.
- Zarah Dominguez
- Kaushik Gopal
- Chet Hasse
- Emily Kager
Assignments
There are 3 Android projects in this class. Each assignment should have a Github repository which includes the README.md template specified for each assignment.
Assignment 1 – Tip Calculator
- Overview
- Walkthrough video
- Project due: Sunday, October 17 at 11:59pm
Assignment 2 – My Maps
- Overview
- Walkthrough video
- Project due: Sunday, October 31 at 11:59pm
Assignment 3 – Yelp Clone
- Overview
- Walkthrough video
- Project due: Sunday, November 14 at 11:59pm
Course Policies
Communication
We will primarily use Ed Discussion for course announcements and questions. Unless your question has sensitive information, please use Ed for asking and answering questions so others can benefit.
Prerequisites
CS 106B, or an equivalent amount of programming experience, is expected for this class. Experience with Kotlin is not required.
If you have not taken CS 106B, you are still welcome to take this class, but you should expect the assignments to take significantly longer to complete.
Grading
You must complete each of the 3 assignments plus any extension to gain credit.
An extension can be anything from changing the background color of the app to introducing a new screen into the app. My goal is for you to do something beyond what is shown in the walkthrough video.
Collaboration Policy
The walkthrough videos will guide you through the majority of each assignment. You may discuss extensions with other students and you may work together to come up with solutions. Each student must write the code for their extension independently.
Late Submissions
Late submissions are not permitted. Since there are only 3 assignments, and we will be doing peer reviews, it's essential that submissions happen on time.
If you have questions about these policies, please ask me.