Intro to Android Development
  • Welcome
  • Syllabus
  • Hack Challenge
  • Resources
    • Lecture Videos
    • Ed Discussion
    • Git & GitHub Help/How-To
    • Setting up Android Studio
    • Starting an Android Studio Project & Making an Emulator
    • Importing, Exporting, & Submitting Your Projects to CMS
  • SP25 Course Material
    • Week 1 | Course Logistics, Kotlin, & Basic UI
      • Relevant Links
      • Demo/Lecture: Eatery Card
      • A0: Eatery Card (Follow-Along)
    • Week 2 | States, Components, LazyColumn
      • Relevant Links
      • Demo: Todo List
      • A2: Shopping List
    • Week 3 | Navigation & Animations
      • Relevant Links
      • Demo: Onboarding
      • A3: Stock Trading (RobbingGood)
    • Week 4 | MVVM and Flows
      • Relevant Links
      • Demo: Eatery Card 2
      • A4: Chat of a Lifetime
    • Week 5 | Dumb Components & UIEvents
      • Relevant Links
      • Demo: Music Player
      • A5: Rate My Vibe
    • Week 6 | Coroutines, Networking, JSON
      • Relevant Links
      • Demo: Retrofit
      • A6: You Should Even Lift, Bro.
  • Bonus Week | Android Job Search
    • Relevant Links
    • Android Technical Interview Question!
  • Textbook
    • 1. Introduction to the Editor and Views
      • 1.1 Introduction to the Editor
      • 1.2 SDK Management
      • 1.3 Kotlin Overview
      • 1.4 Views
      • 1.5 Android Studio Project Demo + Understanding The Editor
    • 2. Jetpack Compose
      • 2.1 Introduction
      • 2.2 Layouts
      • 2.3 Modifiers
      • 2.4 Animations
      • 2.5 Lazy Lists
      • 2.6 Reactive UI
    • 3. Intents and Manifest
      • 3.1 Activities
      • 3.2 Implicit Intents
      • 3.3 Explicit Intents
      • 3.4 Manifest
      • 3.5 Permissions
      • 3.6 Summary
    • 4. Navigation
      • 4.1 Types of Navigation
      • 4.2 Implementation of the Bottom Navigation Bar
    • 5. Data and Persistent Storage
      • 5.1 Singleton Classes
      • 5.2 Shared Preferences
      • 5.3 Rooms
      • 5.4 Entities
      • 5.5 Data Access Objects
      • 5.6 Databases
    • 5.5 Concurrency
      • 5.5.1 Coroutines
      • 5.5.2 Implementation of Coroutines
      • 5.5.3 Coroutines with Networking Calls
    • 6. Networking and 3rd Party libraries
      • 6.1 HTTP Overview
      • 6.2 3rd Party Libraries
      • 6.3 JSON and Moshi
      • 6.4 Retrofit
      • 6.5 Summary
    • 7. MVVM Design Pattern
      • 7.1 Key Idea
      • 7.2 Implementation Ideas
    • 8. Flows
    • 9. The Art and Ontology of Software
    • 10. 🔥 Firebase
      • 10.1 Setting up Firebase
      • 10.2 Authentication
      • 10.3 Analytics
      • 10.4 Messaging
      • 10.5 Firestore
  • Additional Topics
    • Git and GitHub
    • Exporting to APK
  • Archive
    • Archived Native Android Textbook Pages
      • 1. Layouts and More Views
        • 1.1 File Structure and File Types
        • 1.2 Resource Files
        • 1.3 Button and Input Control
        • 1.4 ViewGroups
        • 1.5 Summary + A Note On Chapter 2 Topics
      • 2. RecyclerViews
        • 2.1 RecyclerViews
        • 2.2 RecyclerView Performance
        • 2.3 Implementation of a Recycler View
        • 2.4 Implementation with Input Controls
        • 2.5 Filtering RecyclerViews
        • 2.6 Recyclerview Demo
      • 3. ListViews and Searching
        • 3.1 ListView vs. RecyclerView
        • 3.2 ListView Performance
        • 3.3 Implementation of a ListView
        • 3.4 Searching in a List View
      • 4. Fragments
        • 4.1 What are Fragments?
        • 4.2 Lifecycle of a Fragment
        • 4.3 Integrating a Fragment into an Activity
        • 4.4 Sharing Data Between Fragments
        • 4.5 Fragment Slide Shows
      • 5. OkHttp
      • 6. Activity Lifecycle
      • 7. Implementation of Tab Layout
    • Fall 2024 Course Material
      • Lecture 1 & Exercise 1: Introduction to Android
      • Lecture 1.5: Beauty of Kotlin
      • Lecture 2 & HW 2: Modifiers, Lazylists and Reactive UI
      • Lecture 3 & HW 3: Animations, Intents and Manifest
      • Lecture 4 & HW 4: Coroutines & Navigation
      • Lecture 5 & HW 5: Persistent Storage, Networking, and JSON Parsing
      • Lecture 6 & HW 6: MVVM, Flows
      • Bonus Lectures & Bonus HW
      • Bonus Lecture: Industry Practice
    • Spring 2024 Course Material
      • Lecture 1 & Exercise 1: Introduction to Android
      • Lecture 4 & HW 4: LazyLists
      • Lecture 6 & HW 6: Networking, Data, and Persistent Storage
    • Spring 2020 Course Material
      • Week 1: Intro to the Editor
      • Week 2: Views and Layouts
      • Week 3: Intent and Manifest
      • Week 4: ListView and RecyclerView
      • Week 5: Fragments
      • Week 6: Networking
    • Spring 2021 Lecture & HW 8: Networking & 3rd Party APIs
    • HackOurCampus Workshop
Powered by GitBook
On this page
  • Welcome to Intro to Android Development!
  • Course Staff
  • Course Schedule
  • Grading
  • Attendance
  • Late policy
  • Note on grading for assignments:
  • Course Help
  • Office Hours
  • Hack Challenge
  • Academic Integrity & Collaboration

Was this helpful?

Syllabus

Course Logistics!

Welcome to Intro to Android Development!

Hello and welcome to the class! We are your instructors for this course, Justin and Amy, and we’re incredibly excited to help you learn how to make Android apps this semester. It wasn't too long ago that we were learning the intricacies of Android ourselves, and now we wish to pass on the knowledge we've learned to you. It’s going to be a great semester and we can’t wait to get started!

Course Staff

(If you have any questions or concerns, feel free to reach out the instructors at jjg283@cornell.edu and ajw289@cornell.edu.)

Justin Guo

Course Instructor

Amy Wang

Course Instructor

Jonathan Chen

TA

Mihili Herath

TA

Veronica Starchenko

TA

Helen Bian

TA

Zach Seidner

TA

Andrew Cheung

TA

Emil Jiang

TA

Caleb Shim

TA

If you have a question for the course staff, ask a private question on Ed Discussion or schedule a meeting during office hours.

Course Schedule

This schedule is tentative and subject to changes to Cornell's Spring 2025 academic calendar.

Lectures will be held in Olin 145 at 8:35-9:25pm every Monday and Wednesday.

Towards the end of the course, you'll be participating in the 2-week Hack Challenge alongside students from other AppDev courses, to create a full-fledged mobile application.

Outlined below is a schedule of our lectures, discussions, and projects (with their due dates).

Class Dates
Topic
Project Assigned
Project Due Date

3/10

Course Logistics, Kotlin, & Basic UI (Lecture)

A0 (Ungraded)

A0 is Ungraded.

3/12

Eatery Card (Demo)

3/17

States, Components, & LazyColumn (Lecture)

A2

3/23 @ 11:59pm

3/19

(Demo)

3/24

Navigation & Animations (Lecture)

A3

4/6 @ 11:59pm

3/26

(Demo)

3/29 - 4/6

Spring Break!

-

-

4/7

MVVM & Flows

A4

4/13 @ 11:59pm

4/9

(Demo)

4/14

Dumb Components (MVVM Component Design) (Lecture)

A5

4/20 @ 11:59pm

4/16

(Demo)

4/21

Coroutines, Networking, JSON

A6

5/5 @ 11:59pm (Extended Deadline due to Hack Challenge)

4/23

(Demo)

4/28

Bonus Lecture? (TBD)

4/30

Bonus Lecture? (TBD)

Grading

Note: for SP25, you can take this course for up to 2 credits, in the event of credit overload. However, regardless of the number of credits you're signed up for, you are still expected to complete 2 credits worth of work.

This is a 2 credit S/U course and grading will be determined by all projects, with more emphasis on the Hack Challenge final project.

Each project is worth 10-12 points, and the final project is worth 20 points: 10 points for the midpoint submission and 10 points for the final submission. Each project (with the exception of the first) will have extra credit opportunities for you to challenge yourself and dive deeper into Android development.

To pass this course, you will need >= 70 points by the end of the semester.

Assignments

Weight

A0

0 (Ungraded)

A2

13

A3

13

A4

13

A5

13

A6

13

Hack Challenge

20

Participation

15

Total

100

Passing Score

70

Attendance

Attendance is required for all students of the course for the lectures, and are permitted at most 3 absences (not including bonus lectures which do not require attendance). If you exceed this amount you will be given a 0 for participation. Attendance will be taken at the end of each lecture (and demo).

Late policy

You are given 6 slip days that you can use on any of the assignments aside from the Hack Challenge project. Each assignment will be opened for late submissions for an extra 2 days after the regular deadline. If you submit an assignment late and run out of slip days, assignments will be automatically docked 2 points.

Note on grading for assignments:

If you are unable to finish the project as a result of an error, please add a note in a README.txt file explaining:

  1. the error that you are encountering

  2. the suspected cause of the error (doesn't have to be correct!)

  3. the solutions you have attempted to resolve the error

This helps out the grader quickly find and debug errors and give partial points for effort!

It is also helpful to leave broken code in your project (but have it commented out). This will allow us to better understand your thought process and give you partial points for missing features.

Course Help

Office Hours

  • Office hours are held at multiple times throughout the week by instructors and TAs!

  • Check Ed Discussion for any TA announcements for OH adjustments.

(OH starts on the week of 3/16. If you need any course help before that, feel free to stay after class and ask the instructors questions, or ask on Ed Discussion!)

We are here to help you succeed! Our number one goal is for you to LEARN Android development and we will be with you each step of the way to make sure that happens 👏.

Hack Challenge

At the end of the course, you and up to three other members of AppDev courses (Intro to Digital Product Design, Intro to Backend Engineering, Intro to iOS) will have the chance to work in a group and apply all that you’ve learned in the course to create a functional, polished app.

Participation in the Hack Challenge is required as the final project for this course. The course staff will judge the best apps and there will be sponsored prizes! Last semester’s winners won Google Homes, bluetooth speakers, Echo Dots, or Chromecasts. This could be you this semester, so start brainstorming ideas!

Academic Integrity & Collaboration

We encourage using the internet to learn more about Android development, but again, any code you submit must be written by you!

PreviousWelcomeNextGit & GitHub Help/How-To

Last updated 1 month ago

Was this helpful?

All lectures will be recorded and posted to AppDev's after the lecture.

If you ever need help, you can always post on the course . We will be monitoring the class feed to be helping you! For more complicated questions, try to attend office hours if at all possible.

See the for office hour times!

As with any other course at Cornell, the code of academic integrity will be enforced in this class. All individual projects must be done by yourself. All University-standard Academic Integrity guidelines should be followed. This includes proper attribution of any resources found online, including anything that may be open-sourced by AppDev. The University guidelines for Academic Integrity can be found .

YouTube channel
Ed Discussion
OH Google Calendar
here