# Textbook

- [1. Introduction to the Editor and Views](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor.md)
- [1.1 Introduction to the Editor](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor/1.1-intro-to-editor.md)
- [1.2 SDK Management](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor/1.2-sdk-management.md)
- [1.3 Kotlin Overview](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor/1.3-java-review.md)
- [1.4 Views](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor/1.4-views.md)
- [1.5 Android Studio Project Demo + Understanding The Editor](https://android-course.cornellappdev.com/chapters/1.-introduction-to-the-editor/1.5-demo-wip.md)
- [2. Jetpack Compose](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose.md)
- [2.1 Introduction](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.1-introduction.md): Providing an overview of Jetpack Compose
- [2.2 Layouts](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.2-layouts.md): Organization slay
- [2.3 Modifiers](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.3-modifiers.md)
- [2.4 Animations](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.4-animations.md)
- [2.5 Lazy Lists](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.5-lazy-lists.md)
- [2.6 Reactive UI](https://android-course.cornellappdev.com/chapters/2.-jetpack-compose/2.6-reactive-ui.md)
- [3. Intents and Manifest](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest.md)
- [3.1 Activities](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.1-activities.md)
- [3.2 Implicit Intents](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.3-explicit-intents.md)
- [3.3 Explicit Intents](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.2-implicit-intents.md)
- [3.4 Manifest](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.1-manifest.md)
- [3.5 Permissions](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.5-permissions.md)
- [3.6 Summary](https://android-course.cornellappdev.com/chapters/3.-intent-and-manifest/3.6-summary.md)
- [4. Navigation](https://android-course.cornellappdev.com/chapters/8.-navigation.md)
- [4.1 Types of Navigation](https://android-course.cornellappdev.com/chapters/8.-navigation/8.1-types-of-navigation.md)
- [4.2 Implementation of the Bottom Navigation Bar](https://android-course.cornellappdev.com/chapters/8.-navigation/bottom-navigation.md)
- [5. Data and Persistent Storage](https://android-course.cornellappdev.com/chapters/7.-persistent-storage.md): we storing !1!
- [5.1 Singleton Classes](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/6.1-singletons.md)
- [5.2 Shared Preferences](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/shared-preferences.md)
- [5.3 Rooms](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/rooms.md)
- [5.4 Entities](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/entities.md)
- [5.5 Data Access Objects](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/data-access-objects.md)
- [5.6 Databases](https://android-course.cornellappdev.com/chapters/7.-persistent-storage/databases.md)
- [5.5 Concurrency](https://android-course.cornellappdev.com/chapters/5.5-concurrency.md): Doing multiple things at the same time! We love multi-tasking 🤩
- [5.5.1 Coroutines](https://android-course.cornellappdev.com/chapters/5.5-concurrency/7.2-coroutines.md): A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- [5.5.2 Implementation of Coroutines](https://android-course.cornellappdev.com/chapters/5.5-concurrency/8.3-implementation-of-coroutines.md)
- [5.5.3 Coroutines with Networking Calls](https://android-course.cornellappdev.com/chapters/5.5-concurrency/8.4-coroutines-with-networking-calls.md)
- [6. Networking and 3rd Party libraries](https://android-course.cornellappdev.com/chapters/6.-networking.md)
- [6.1 HTTP Overview](https://android-course.cornellappdev.com/chapters/6.-networking/6.2-http-overview.md)
- [6.2 3rd Party Libraries](https://android-course.cornellappdev.com/chapters/6.-networking/8.5-3rd-party-apis.md)
- [6.3 JSON and Moshi](https://android-course.cornellappdev.com/chapters/6.-networking/6.3-json-and-moshi.md)
- [6.4 Retrofit](https://android-course.cornellappdev.com/chapters/6.-networking/6.4-retrofit.md)
- [6.5 Summary](https://android-course.cornellappdev.com/chapters/6.-networking/6.4-summary.md)
- [7. MVVM Design Pattern](https://android-course.cornellappdev.com/chapters/7.-mvvm-design-pattern.md)
- [7.1 Key Idea](https://android-course.cornellappdev.com/chapters/7.-mvvm-design-pattern/7.1-key-idea.md): MVVM stands for model-view-viewmodel, let's go over each of these and see how they provide a framework for state management.
- [7.2 Implementation Ideas](https://android-course.cornellappdev.com/chapters/7.-mvvm-design-pattern/7.2-implementation-ideas.md)
- [8. Flows](https://android-course.cornellappdev.com/chapters/8.-flows.md)
- [9. The Art and Ontology of Software](https://android-course.cornellappdev.com/chapters/android-from-a-software-theory-perspective.md): Adam's Fall 2020 Guest Lecture
- [10. 🔥 Firebase](https://android-course.cornellappdev.com/chapters/11.-firebase.md): Chris' Spring 2021 Guest Lecture
- [10.1 Setting up Firebase](https://android-course.cornellappdev.com/chapters/11.-firebase/11.1-setting-up-firebase.md): Setting up Firebase is very easy and pain free (kinda), just follow these steps! ✨✨
- [10.2 Authentication](https://android-course.cornellappdev.com/chapters/11.-firebase/11.2-authentication.md)
- [10.3 Analytics](https://android-course.cornellappdev.com/chapters/11.-firebase/11.3-analytics.md)
- [10.4 Messaging](https://android-course.cornellappdev.com/chapters/11.-firebase/11.4-messaging.md)
- [10.5 Firestore](https://android-course.cornellappdev.com/chapters/11.-firebase/10.5-firestore.md): No backend? No problem.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://android-course.cornellappdev.com/chapters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
