{"version":1,"pages":[{"id":"-LvOeYTCKN_KmOwKfb1U","title":"Welcome","pathname":"/","siteSpaceId":"sitesp_Ix0W3","description":"SP26 Edition!"},{"id":"-LvOf3UDZJ2j4znbO8Ht","title":"Syllabus","pathname":"/syllabus","siteSpaceId":"sitesp_Ix0W3","description":"Course Logistics!"},{"id":"-MjvYPBKY_tnXnCXVLBu","title":"Git & GitHub Help/How-To","pathname":"/resources/git-and-github-help","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Resources"}]},{"id":"-LvOi84-D2PR8EbsUyc3","title":"Setting up Android Studio","pathname":"/resources/0.-setting-up-android-studio","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Resources"}]},{"id":"GjiBbppL4iMcbIwnGoaO","title":"Starting an Android Studio Project & Making an Emulator","pathname":"/resources/starting-an-android-studio-project-and-making-an-emulator","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Resources"}]},{"id":"-M0LDD0pOD1GUorJ93__","title":"Importing, Exporting, & Submitting Your Projects to CMS","pathname":"/resources/submitting-your-projects","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Resources"}]},{"id":"dEMSMVXZa5mkGCr0CExr","title":"Week 1 | Course Logistics, Kotlin, & Basic UI","pathname":"/course-material/week-1-or-course-logistics-kotlin-and-basic-ui","siteSpaceId":"sitesp_Ix0W3","description":"Welcome to Intro to Android! :D","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"wLovnozguGzzWD245pgN","title":"Relevant Links","pathname":"/course-material/week-1-or-course-logistics-kotlin-and-basic-ui/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"fZQ7Wb0t5tyZmihUh4Go","title":"Demo/Lecture: Eatery Card","pathname":"/course-material/week-1-or-course-logistics-kotlin-and-basic-ui/demo-lecture-eatery-card","siteSpaceId":"sitesp_Ix0W3","description":"Using Modifier and a component's arguments to visually build a complex component!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"ppZyn5NCsEHTguWiU3dH","title":"A1: Eatery Card (Follow-Along)","pathname":"/course-material/week-1-or-course-logistics-kotlin-and-basic-ui/a1-eatery-card-follow-along","siteSpaceId":"sitesp_Ix0W3","description":"First-week free!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"muyWnA6x8czoa4TN72rC","title":"Week 2 | States, Components, LazyColumn","pathname":"/course-material/week-2-or-states-components-lazycolumn","siteSpaceId":"sitesp_Ix0W3","description":"Apps need their UI to change to be at all useful...","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"6eoV2jEnA1CcsjL1OhmT","title":"Relevant Links","pathname":"/course-material/week-2-or-states-components-lazycolumn/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"9g12z3e9ypT2Oy1S2gvj","title":"Demo: Todo List","pathname":"/course-material/week-2-or-states-components-lazycolumn/demo-todo-list","siteSpaceId":"sitesp_Ix0W3","description":"Some more practice with components and states!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"eJQjLQqsOkVh49YzHsAU","title":"A2: Shopping List","pathname":"/course-material/week-2-or-states-components-lazycolumn/a2-shopping-list","siteSpaceId":"sitesp_Ix0W3","description":"Keeping track of expenses!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"RllwVgLBSWBUGHtiwOs8","title":"Week 3 | Navigation & Animations","pathname":"/course-material/week-3-or-navigation-and-animations","siteSpaceId":"sitesp_Ix0W3","description":"The more complex sides of UI...","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"D6F4TqkGC3K84i6VEAWF","title":"Relevant Links","pathname":"/course-material/week-3-or-navigation-and-animations/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"A4D1SRHQ3QoraJEj3I2E","title":"Demo: Onboarding","pathname":"/course-material/week-3-or-navigation-and-animations/demo-onboarding","siteSpaceId":"sitesp_Ix0W3","description":"So. many. screens!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"vpkNWc3LU8kQCGOqKRN7","title":"A3: Stock Trading (RobbingGood)","pathname":"/course-material/week-3-or-navigation-and-animations/a3-stock-trading-robbinggood","siteSpaceId":"sitesp_Ix0W3","description":"I am Sobbin...hood...","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"J784F1Fnd2r6d6auGuTo","title":"Week 4 | MVVM and Flows","pathname":"/course-material/week-4-or-mvvm-and-flows","siteSpaceId":"sitesp_Ix0W3","description":"How do you make an app... an actual app?","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"9cxFmKC67nJ7bSXSTgV1","title":"Relevant Links","pathname":"/course-material/week-4-or-mvvm-and-flows/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"pTMmtEUwsnlAMdvHA0Fq","title":"Demo: Eatery Card 2","pathname":"/course-material/week-4-or-mvvm-and-flows/demo-eatery-card-2","siteSpaceId":"sitesp_Ix0W3","description":"EateryCard Part 2","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"TBGO2ZQxKYmqVGDKEI0h","title":"A4: Chat of a Lifetime","pathname":"/course-material/week-4-or-mvvm-and-flows/a4-chat-of-a-lifetime","siteSpaceId":"sitesp_Ix0W3","description":"Asking the real questions in life!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"HxR9cWY2TleSt6gVEUV6","title":"Week 5 | Coroutines, Networking, JSON","pathname":"/course-material/week-5-or-coroutines-networking-json","siteSpaceId":"sitesp_Ix0W3","description":"The backend to my frontend ❤️","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"HewD6LfqpaaQYJV60nQG","title":"Relevant Links","pathname":"/course-material/week-5-or-coroutines-networking-json/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 5 | Coroutines, Networking, JSON"}]},{"id":"ag8suqfUlylThZqFhYMv","title":"Demo: Chatter","pathname":"/course-material/week-5-or-coroutines-networking-json/demo-chatter","siteSpaceId":"sitesp_Ix0W3","description":"Also known as Y...","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 5 | Coroutines, Networking, JSON"}]},{"id":"TGRQHD7i5YokMoeSCrJT","title":"A5: Bananazon","pathname":"/course-material/week-5-or-coroutines-networking-json/a5-bananazon","siteSpaceId":"sitesp_Ix0W3","description":"I'm going bananas!!!","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 5 | Coroutines, Networking, JSON"}]},{"id":"9W9REXToU6g0jCsuwhPx","title":"Week 6 | Dumb Components & UIEvents","pathname":"/course-material/week-6-or-dumb-components-and-uievents","siteSpaceId":"sitesp_Ix0W3","description":"How do we make our components obey MVVM? Make them dumber!","breadcrumbs":[{"label":"SP26 Course Material"}]},{"id":"lGs6svtAb3AHZoreLJRA","title":"Relevant Links","pathname":"/course-material/week-6-or-dumb-components-and-uievents/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 6 | Dumb Components & UIEvents"}]},{"id":"32n0Alg6aUSIOrzI6O8g","title":"Demo: Music Player","pathname":"/course-material/week-6-or-dumb-components-and-uievents/demo-music-player","siteSpaceId":"sitesp_Ix0W3","description":"This week, we'll be practicing more MVVM abstractions and UIEvents.","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 6 | Dumb Components & UIEvents"}]},{"id":"6JV8pP3POgitHfUl0o4b","title":"A6: Rate My Vibe","pathname":"/course-material/week-6-or-dumb-components-and-uievents/a6-rate-my-vibe","siteSpaceId":"sitesp_Ix0W3","description":"Are you chill like dat?","breadcrumbs":[{"label":"SP26 Course Material"},{"label":"Week 6 | Dumb Components & UIEvents"}]},{"id":"2WR5U9AORV84XFJoXvNv","title":"Bonus Week | Hack Challenge & ML Kit","pathname":"/bonus-week-or-hack-challenge-and-ml-kit","siteSpaceId":"sitesp_Ix0W3","description":"There's no starter code anymore..."},{"id":"8RjC3OveA5Xow53VHGRw","title":"Relevant Links","pathname":"/bonus-week-or-hack-challenge-and-ml-kit/relevant-links","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Bonus Week | Hack Challenge & ML Kit"}]},{"id":"-LvOf9zFQvRggEqxLsrM","title":"1. Introduction to the Editor and Views","pathname":"/chapters/1.-introduction-to-the-editor","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"-LvOfISWOCT5xU7hzvCq","title":"1.1 Introduction to the Editor","pathname":"/chapters/1.-introduction-to-the-editor/1.1-intro-to-editor","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"1. Introduction to the Editor and Views"}]},{"id":"-LvZE3De3Wq0eZQCykFe","title":"1.2 SDK Management","pathname":"/chapters/1.-introduction-to-the-editor/1.2-sdk-management","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"1. Introduction to the Editor and Views"}]},{"id":"-LvZEP-P15w1jOPgX-qA","title":"1.3 Kotlin Overview","pathname":"/chapters/1.-introduction-to-the-editor/1.3-java-review","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"1. Introduction to the Editor and Views"}]},{"id":"-LvOfnQihSp-7u9nOoAw","title":"1.4 Views","pathname":"/chapters/1.-introduction-to-the-editor/1.4-views","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"1. Introduction to the Editor and Views"}]},{"id":"-MHMBXT8ksKQkF9s9Rhg","title":"1.5 Android Studio Project Demo + Understanding The Editor","pathname":"/chapters/1.-introduction-to-the-editor/1.5-demo-wip","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"1. Introduction to the Editor and Views"}]},{"id":"tmFvFSVRY6Zfinf9wKgB","title":"2. Jetpack Compose","pathname":"/chapters/2.-jetpack-compose","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"7c0Vu5SssOT1z0THwTrt","title":"2.1 Introduction","pathname":"/chapters/2.-jetpack-compose/2.1-introduction","siteSpaceId":"sitesp_Ix0W3","description":"Providing an overview of Jetpack Compose","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"wkgdm5TfVhhjA8tfxMiC","title":"2.2 Layouts","pathname":"/chapters/2.-jetpack-compose/2.2-layouts","siteSpaceId":"sitesp_Ix0W3","description":"Organization slay","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"DwKh4CfMSLWLwRgVNRVG","title":"2.3 Modifiers","pathname":"/chapters/2.-jetpack-compose/2.3-modifiers","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"L3ABDX4BO1NZEWGlG9mh","title":"2.4 Animations","pathname":"/chapters/2.-jetpack-compose/2.4-animations","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"HRWMWMhLRQMQurXHIG7g","title":"2.5 Lazy Lists","pathname":"/chapters/2.-jetpack-compose/2.5-lazy-lists","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"6J0nDGbnxRP0I6iFJz2l","title":"2.6 Reactive UI","pathname":"/chapters/2.-jetpack-compose/2.6-reactive-ui","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Textbook"},{"label":"2. Jetpack Compose"}]},{"id":"-LvOfCa8wDlXqHwH6W1_","title":"3. Intents and Manifest","pathname":"/chapters/3.-intent-and-manifest","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"-Lv_9xbU0OqeLtFqErhv","title":"3.1 Activities","pathname":"/chapters/3.-intent-and-manifest/3.1-activities","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-LvOgXv_zUMdQ_tUCEGh","title":"3.2 Implicit Intents","pathname":"/chapters/3.-intent-and-manifest/3.3-explicit-intents","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-LvOgOjCWMFdlp5Nh7Y3","title":"3.3 Explicit Intents","pathname":"/chapters/3.-intent-and-manifest/3.2-implicit-intents","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-LvOgK2BcVkrO2Xy95Ik","title":"3.4 Manifest","pathname":"/chapters/3.-intent-and-manifest/3.1-manifest","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-Lv_FrUX0aRwdL6HmpgE","title":"3.5 Permissions","pathname":"/chapters/3.-intent-and-manifest/3.5-permissions","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-LvOgYbHP4XSQSxrw-CD","title":"3.6 Summary","pathname":"/chapters/3.-intent-and-manifest/3.6-summary","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"3. Intents and Manifest"}]},{"id":"-MJhyO14Zw-ii2eVff6A","title":"4. Navigation","pathname":"/chapters/8.-navigation","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"-MJhyY21wSsqtzUsC3br","title":"4.1 Types of Navigation","pathname":"/chapters/8.-navigation/8.1-types-of-navigation","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"4. Navigation"}]},{"id":"-MJhydpiD7oMST_ZN_Sc","title":"4.2 Implementation of the Bottom Navigation Bar","pathname":"/chapters/8.-navigation/bottom-navigation","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"4. Navigation"}]},{"id":"-M6QFp5lLZgl1f8N8VbW","title":"5. Data and Persistent Storage","pathname":"/chapters/7.-persistent-storage","siteSpaceId":"sitesp_Ix0W3","description":"we storing !1!","breadcrumbs":[{"label":"Textbook"}]},{"id":"-MKalkkHMY57WMws4pA0","title":"5.1 Singleton Classes","pathname":"/chapters/7.-persistent-storage/6.1-singletons","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"-M6QNblgSCM3ioYfSSxI","title":"5.2 Shared Preferences","pathname":"/chapters/7.-persistent-storage/shared-preferences","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"-M6QVKWIxXRd6VTm90Od","title":"5.3 Rooms","pathname":"/chapters/7.-persistent-storage/rooms","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"-M6QXAtr1g84aVVtuBEn","title":"5.4 Entities","pathname":"/chapters/7.-persistent-storage/entities","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"-M6QZ7SxKfMUgKD7jPjJ","title":"5.5 Data Access Objects","pathname":"/chapters/7.-persistent-storage/data-access-objects","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"-M6QZ6k_0UFKjPCtjV66","title":"5.6 Databases","pathname":"/chapters/7.-persistent-storage/databases","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5. Data and Persistent Storage"}]},{"id":"TLhTWosiuzayjV5LBj0m","title":"5.5 Concurrency","pathname":"/chapters/5.5-concurrency","siteSpaceId":"sitesp_Ix0W3","description":"Doing multiple things at the same time! We love multi-tasking 🤩","breadcrumbs":[{"label":"Textbook"}]},{"id":"-ML8w2xpWVHCAWKm1VZB","title":"5.5.1 Coroutines","pathname":"/chapters/5.5-concurrency/7.2-coroutines","siteSpaceId":"sitesp_Ix0W3","description":"A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.","breadcrumbs":[{"label":"Textbook"},{"label":"5.5 Concurrency"}]},{"id":"-MYcqsCb1WrwXhxiz_8b","title":"5.5.2 Implementation of Coroutines","pathname":"/chapters/5.5-concurrency/8.3-implementation-of-coroutines","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5.5 Concurrency"}]},{"id":"-MYcr3bPon6rtTYB_Cbz","title":"5.5.3 Coroutines with Networking Calls","pathname":"/chapters/5.5-concurrency/8.4-coroutines-with-networking-calls","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"5.5 Concurrency"}]},{"id":"-LvOf8pL_04ebN21ZRaJ","title":"6. Networking and 3rd Party libraries","pathname":"/chapters/6.-networking","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"-LvOhR--OJsnPY3h6Qxf","title":"6.1 HTTP Overview","pathname":"/chapters/6.-networking/6.2-http-overview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"6. Networking and 3rd Party libraries"}]},{"id":"-MYcw251gv5B4aqfrfhs","title":"6.2 3rd Party Libraries","pathname":"/chapters/6.-networking/8.5-3rd-party-apis","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"6. Networking and 3rd Party libraries"}]},{"id":"k2L7tMm1aiY7vKWrRSwL","title":"6.3 JSON and Moshi","pathname":"/chapters/6.-networking/6.3-json-and-moshi","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"6. Networking and 3rd Party libraries"}]},{"id":"p22nVa7cBjfem4oegZnR","title":"6.4 Retrofit","pathname":"/chapters/6.-networking/6.4-retrofit","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Textbook"},{"label":"6. Networking and 3rd Party libraries"}]},{"id":"-LvOhQh8F3ylVZHY_6fO","title":"6.5 Summary","pathname":"/chapters/6.-networking/6.4-summary","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"6. Networking and 3rd Party libraries"}]},{"id":"N8f9GXE50kYNN8bAKORJ","title":"7. MVVM Design Pattern","pathname":"/chapters/7.-mvvm-design-pattern","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"}]},{"id":"VZLLfSylTHPD1rqeqqVF","title":"7.1 Key Idea","pathname":"/chapters/7.-mvvm-design-pattern/7.1-key-idea","siteSpaceId":"sitesp_Ix0W3","description":"MVVM stands for model-view-viewmodel, let's go over each of these and see how they provide a framework for state management.","breadcrumbs":[{"label":"Textbook"},{"label":"7. MVVM Design Pattern"}]},{"id":"WRhvx5DH7OG8YGM1Zxw5","title":"7.2 Implementation Ideas","pathname":"/chapters/7.-mvvm-design-pattern/7.2-implementation-ideas","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Textbook"},{"label":"7. MVVM Design Pattern"}]},{"id":"BC2eKaXSSPTISR8dw0po","title":"8. Flows","pathname":"/chapters/8.-flows","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Textbook"}]},{"id":"-ML4v8o9zmey5rTB6YE_","title":"9. The Art and Ontology of Software","pathname":"/chapters/android-from-a-software-theory-perspective","siteSpaceId":"sitesp_Ix0W3","description":"Adam's Fall 2020 Guest Lecture","breadcrumbs":[{"label":"Textbook"}]},{"id":"-MYbhbKlzjjQ8v3aq9q7","title":"10. 🔥 Firebase","pathname":"/chapters/11.-firebase","siteSpaceId":"sitesp_Ix0W3","description":"Chris' Spring 2021 Guest Lecture","breadcrumbs":[{"label":"Textbook"}]},{"id":"-MYbjRGrlpMlPYRBdLIx","title":"10.1 Setting up Firebase","pathname":"/chapters/11.-firebase/11.1-setting-up-firebase","siteSpaceId":"sitesp_Ix0W3","description":"Setting up Firebase is very easy and pain free (kinda), just follow these steps! ✨✨","breadcrumbs":[{"label":"Textbook"},{"label":"10. 🔥 Firebase"}]},{"id":"-MYbw7_8s6dp4v0ErsFG","title":"10.2 Authentication","pathname":"/chapters/11.-firebase/11.2-authentication","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"10. 🔥 Firebase"}]},{"id":"-MYc690UZXTzUoWrplQ9","title":"10.3 Analytics","pathname":"/chapters/11.-firebase/11.3-analytics","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"10. 🔥 Firebase"}]},{"id":"-Ma1Tfu33L436Xgc2FQZ","title":"10.4 Messaging","pathname":"/chapters/11.-firebase/11.4-messaging","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Textbook"},{"label":"10. 🔥 Firebase"}]},{"id":"7iL27dkDsqTOabwYXK70","title":"10.5 Firestore","pathname":"/chapters/11.-firebase/10.5-firestore","siteSpaceId":"sitesp_Ix0W3","description":"No backend? No problem.","breadcrumbs":[{"label":"Textbook"},{"label":"10. 🔥 Firebase"}]},{"id":"-M7-FwhEY07ZuUpCLKvQ","title":"Exporting to APK","pathname":"/additional-topics/exporting-to-apk","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Additional Topics"}]},{"id":"Tkcfyoha0Lh0KwCTQDA7","title":"Archived Native Android Textbook Pages","pathname":"/archive/archived-native-android-textbook-pages","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Archive"}]},{"id":"-LvOfDjxJ1hpyRl4yolE","title":"1. Layouts and More Views","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-LvOfDFpYd8FIuJeQcLA","title":"1.1 File Structure and File Types","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts/2.1-file-structure","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"1. Layouts and More Views"}]},{"id":"-LvOfmQbrws9lOsjvUK0","title":"1.2 Resource Files","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts/2.6-resource-files","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"1. Layouts and More Views"}]},{"id":"-LvOfmyU2r-wV2wsn1pY","title":"1.3 Button and Input Control","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts/2.4-button","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"1. Layouts and More Views"}]},{"id":"-LvOfn8_xi8F4iUkSOcN","title":"1.4 ViewGroups","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts/2.3-viewgroup","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"1. Layouts and More Views"}]},{"id":"-LvOg12nNSE3abEId8-V","title":"1.5 Summary + A Note On Chapter 2 Topics","pathname":"/archive/archived-native-android-textbook-pages/2.-views-and-layouts/2.7-summary","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"1. Layouts and More Views"}]},{"id":"-LvOfBri_YtMpjMAHokC","title":"2. RecyclerViews","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-MWN1MQo8wfPSiej6qYB","title":"2.1 RecyclerViews","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/4.1-recycler-views","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"-LvOgyUEHdzLvPjrqBUr","title":"2.2 RecyclerView Performance","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/4.3-performance","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"-LvOgyIEp_jor33nZ5Ql","title":"2.3 Implementation of a Recycler View","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/4.4-implementation-of-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"-LvOgy5VCWhNdshlaugB","title":"2.4 Implementation with Input Controls","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/4.5-implementation-with-input-controls","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"l5jmS1jWRVJNZ0MtzBIJ","title":"2.5 Filtering RecyclerViews","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/2.5-filtering-recyclerviews","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"unilRubbVYwa6OaZpKBG","title":"2.6 Recyclerview Demo","pathname":"/archive/archived-native-android-textbook-pages/4.-listview-and-recyclerview/2.6-recyclerview-demo","siteSpaceId":"sitesp_Ix0W3","description":"Code that contains a RecylerView with customized adapter and two types of OnClickListeners.","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"2. RecyclerViews"}]},{"id":"-MWwJL2sDIC7kkFrdPAK","title":"3. ListViews and Searching","pathname":"/archive/archived-native-android-textbook-pages/5.-listviews","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-LvOgvMCTPRJMsH3rrm8","title":"3.1 ListView vs. RecyclerView","pathname":"/archive/archived-native-android-textbook-pages/5.-listviews/4.1-listview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"3. ListViews and Searching"}]},{"id":"-MWN2-4uL75sTz-MsBhO","title":"3.2 ListView Performance","pathname":"/archive/archived-native-android-textbook-pages/5.-listviews/5.2-listview-performance","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"3. ListViews and Searching"}]},{"id":"-LvOgyfUV3wPOgt6exSi","title":"3.3 Implementation of a ListView","pathname":"/archive/archived-native-android-textbook-pages/5.-listviews/4.2-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"3. ListViews and Searching"}]},{"id":"-MWwK9A4IK4KgRvnwRos","title":"3.4 Searching in a List View","pathname":"/archive/archived-native-android-textbook-pages/5.-listviews/5.4-searching-in-a-list-view","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"3. ListViews and Searching"}]},{"id":"-LvOfBFfmNQVXIHQ7LUq","title":"4. Fragments","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-LvTMzg1_RVNt-EcjfgS","title":"4.1 What are Fragments?","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments/5.1-what-are-fragments","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"4. Fragments"}]},{"id":"-LvTNA6DUfHAEcgsdDcA","title":"4.2 Lifecycle of a Fragment","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments/5.2-lifecycle-of-a-fragment","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"4. Fragments"}]},{"id":"-LvTN9w-bSge71Xhgp1H","title":"4.3 Integrating a Fragment into an Activity","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments/5.3-integrating-a-fragment-into-an-activity","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"4. Fragments"}]},{"id":"-LvTN9Z7TGf0kXp29mzo","title":"4.4 Sharing Data Between Fragments","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments/5.5-sharing-data-between-fragments","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"4. Fragments"}]},{"id":"-LvTN9lMyMWXcZtxw5JP","title":"4.5 Fragment Slide Shows","pathname":"/archive/archived-native-android-textbook-pages/5.-fragments/5.4-implementation-with-fragments","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"},{"label":"4. Fragments"}]},{"id":"-LvOhQ8HPnua2ieykbqp","title":"5. OkHttp","pathname":"/archive/archived-native-android-textbook-pages/6.1-asynctask","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-LvOg_4kMeTFhJh8nJ5M","title":"6. Activity Lifecycle","pathname":"/archive/archived-native-android-textbook-pages/3.4-android-lifecycle","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"-MJhyjvlpK6HOu-rTPNN","title":"7. Implementation of Tab Layout","pathname":"/archive/archived-native-android-textbook-pages/tab-layouts","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Archived Native Android Textbook Pages"}]},{"id":"Ow7HMTQTsK8n0GoYB1VL","title":"Spring 2025 Course Material","pathname":"/archive/spring-2025-course-material","siteSpaceId":"sitesp_Ix0W3","description":"Archive of the FA24 Android Course","breadcrumbs":[{"label":"Archive"}]},{"id":"K3fBPC2Jq9mmnQrff6ew","title":"Week 1 | Course Logistics, Kotlin, & Basic UI","pathname":"/archive/spring-2025-course-material/bonus-lectures","siteSpaceId":"sitesp_Ix0W3","description":"Welcome to Intro to Android! :D","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"xxjbnBD6oldjdjFQzplC","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/bonus-lectures/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"haxWl1ftGCLysaBExFaB","title":"Demo/Lecture: Eatery Card","pathname":"/archive/spring-2025-course-material/bonus-lectures/demo-lecture-eatery-card","siteSpaceId":"sitesp_Ix0W3","description":"Using Modifier and a component's arguments to visually build a complex component!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"iRDMK8FJQ7kj79lC7RPQ","title":"A0: Eatery Card (Follow-Along)","pathname":"/archive/spring-2025-course-material/bonus-lectures/a0-eatery-card-follow-along","siteSpaceId":"sitesp_Ix0W3","description":"First-week free!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 1 | Course Logistics, Kotlin, & Basic UI"}]},{"id":"3I3I3DMuQZq6vpu6DdFy","title":"Week 2 | States, Components, LazyColumn","pathname":"/archive/spring-2025-course-material/week-2-or-states-components-lazycolumn","siteSpaceId":"sitesp_Ix0W3","description":"Apps need their UI to change to be at all useful...","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"yU61iaBXZ8uwTa7dzcYa","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/week-2-or-states-components-lazycolumn/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"2amqVTk57Js10jNfnqw2","title":"Demo: Todo List","pathname":"/archive/spring-2025-course-material/week-2-or-states-components-lazycolumn/demo-todo-list","siteSpaceId":"sitesp_Ix0W3","description":"Some more practice with components and states!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"3u3YKh46IDYOqK94sH2V","title":"A2: Shopping List","pathname":"/archive/spring-2025-course-material/week-2-or-states-components-lazycolumn/a2-shopping-list","siteSpaceId":"sitesp_Ix0W3","description":"Keeping track of expenses!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 2 | States, Components, LazyColumn"}]},{"id":"6ftt1LACiHy4pDispMp5","title":"Week 3 | Navigation & Animations","pathname":"/archive/spring-2025-course-material/week-3-or-navigation-and-animations","siteSpaceId":"sitesp_Ix0W3","description":"The more complex sides of UI...","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"ymmTKLLPAKlmvNF7U7xT","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/week-3-or-navigation-and-animations/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"9NbZ1e7sqakEQEOWwl0S","title":"Demo: Onboarding","pathname":"/archive/spring-2025-course-material/week-3-or-navigation-and-animations/demo-onboarding","siteSpaceId":"sitesp_Ix0W3","description":"So. many. screens!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"SAALHQLWPsqud62pdTVJ","title":"A3: Stock Trading (RobbingGood)","pathname":"/archive/spring-2025-course-material/week-3-or-navigation-and-animations/a3-stock-trading-robbinggood","siteSpaceId":"sitesp_Ix0W3","description":"I am Sobbin...hood...","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 3 | Navigation & Animations"}]},{"id":"xhuCpnaUR18P15KhfvOV","title":"Week 4 | MVVM and Flows","pathname":"/archive/spring-2025-course-material/week-4-or-mvvm-and-flows","siteSpaceId":"sitesp_Ix0W3","description":"How do you make an app... an actual app?","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"I4hcd9jI87JIYgo2EHqT","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/week-4-or-mvvm-and-flows/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"NIjWQTVlgA77LF0P5Ma2","title":"Demo: Eatery Card 2","pathname":"/archive/spring-2025-course-material/week-4-or-mvvm-and-flows/demo-eatery-card-2","siteSpaceId":"sitesp_Ix0W3","description":"EateryCard Part 2","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"rRefkWRpBdKb7DOqeZ8i","title":"A4: Chat of a Lifetime","pathname":"/archive/spring-2025-course-material/week-4-or-mvvm-and-flows/a4-chat-of-a-lifetime","siteSpaceId":"sitesp_Ix0W3","description":"Asking the real questions in life!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 4 | MVVM and Flows"}]},{"id":"k5GVbM1HNZjn3TWhlDZF","title":"Week 5 | Dumb Components & UIEvents","pathname":"/archive/spring-2025-course-material/week-5-or-dumb-components-and-uievents","siteSpaceId":"sitesp_Ix0W3","description":"How do we make our components obey MVVM? Make them dumber!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"u398QZMQq901ogNX33qK","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/week-5-or-dumb-components-and-uievents/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 5 | Dumb Components & UIEvents"}]},{"id":"ho7CJjHWxIKNzb6UGaci","title":"Demo: Music Player","pathname":"/archive/spring-2025-course-material/week-5-or-dumb-components-and-uievents/demo-music-player","siteSpaceId":"sitesp_Ix0W3","description":"This week, we'll be practicing more MVVM abstractions and UIEvents.","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 5 | Dumb Components & UIEvents"}]},{"id":"R1VgV3hQFv21uSRbCVGy","title":"A5: Rate My Vibe","pathname":"/archive/spring-2025-course-material/week-5-or-dumb-components-and-uievents/a5-rate-my-vibe","siteSpaceId":"sitesp_Ix0W3","description":"Are you chill like dat?","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 5 | Dumb Components & UIEvents"}]},{"id":"Ez1T9e9PhTrnRmNJS8oL","title":"Week 6 | Coroutines, Networking, JSON","pathname":"/archive/spring-2025-course-material/week-6-or-coroutines-networking-json","siteSpaceId":"sitesp_Ix0W3","description":"The backend to my frontend ❤️","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"fZNNfa2gOtzQS3zF69oG","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/week-6-or-coroutines-networking-json/relevant-links","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 6 | Coroutines, Networking, JSON"}]},{"id":"LIMRjKxkY4ciUScJnGwC","title":"Demo: Retrofit","pathname":"/archive/spring-2025-course-material/week-6-or-coroutines-networking-json/demo-retrofit","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 6 | Coroutines, Networking, JSON"}]},{"id":"5R36YWBHx2bYqUITd1nf","title":"A6: You Should Even Lift, Bro.","pathname":"/archive/spring-2025-course-material/week-6-or-coroutines-networking-json/a6-you-should-even-lift-bro.","siteSpaceId":"sitesp_Ix0W3","description":"Moving onto physiological wellness!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Week 6 | Coroutines, Networking, JSON"}]},{"id":"epkBcvOvPuAqexcq1lc4","title":"Bonus Week | Android Job Search","pathname":"/archive/spring-2025-course-material/bonus-week-or-android-job-search","siteSpaceId":"sitesp_Ix0W3","description":"The rat race!","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"}]},{"id":"AZe2AbY5UeRxxQ2PftyF","title":"Relevant Links","pathname":"/archive/spring-2025-course-material/bonus-week-or-android-job-search/relevant-links","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Bonus Week | Android Job Search"}]},{"id":"nG4VKwL3CyjjY5q6oyTC","title":"Android Technical Interview Question!","pathname":"/archive/spring-2025-course-material/bonus-week-or-android-job-search/android-technical-interview-question","siteSpaceId":"sitesp_Ix0W3","description":"Let's get technical...","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2025 Course Material"},{"label":"Bonus Week | Android Job Search"}]},{"id":"TDFpXL9qgUXeLODNNw9S","title":"Fall 2024 Course Material","pathname":"/archive/fall-2024-course-material","siteSpaceId":"sitesp_Ix0W3","description":"Archive of the FA24 Android Course","breadcrumbs":[{"label":"Archive"}]},{"id":"-MHM627Z5vvv4JPbMxhr","title":"Lecture 1 & Exercise 1: Introduction to Android","pathname":"/archive/fall-2024-course-material/1.-introduction-to-the-editor","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"w1zuUIJnk6K76TGpSneT","title":"Lecture 1.5: Beauty of Kotlin","pathname":"/archive/fall-2024-course-material/lecture-1.5-beauty-of-kotlin","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"-MIImvVyDFStXCrEokaa","title":"Lecture 2 & HW 2: Modifiers, Lazylists and Reactive UI","pathname":"/archive/fall-2024-course-material/lecture-2-views-and-layouts","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"-MIj8iXxOxEfzkZvlfz_","title":"Lecture 3 & HW 3: Animations, Intents and Manifest","pathname":"/archive/fall-2024-course-material/lecture-3-intent-and-manifest","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"-MJPswOws1V4xJn9b3PI","title":"Lecture 4 & HW 4: Coroutines & Navigation","pathname":"/archive/fall-2024-course-material/lecture-4-listview-and-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"-MKb4rEgkK70T9tq0Ajy","title":"Lecture 5 & HW 5: Persistent Storage, Networking, and JSON Parsing","pathname":"/archive/fall-2024-course-material/lecture-6-fragments-and-persistent-storage","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"-MLA_3Rgvqfe5Y4jQ92r","title":"Lecture 6 & HW 6: MVVM, Flows","pathname":"/archive/fall-2024-course-material/lecture-7-networking","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"foi5TllTFW3igYawU4I7","title":"Bonus Lectures & Bonus HW","pathname":"/archive/fall-2024-course-material/bonus-lectures","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"n4EgTA58T9jg8RK2NlRO","title":"Bonus Lecture: Industry Practice","pathname":"/archive/fall-2024-course-material/bonus-lecture-industry-practice","siteSpaceId":"sitesp_Ix0W3","description":"Do you want to get a job in Android Development? Maybe a job in any development? This is the lecture for you!","breadcrumbs":[{"label":"Archive"},{"label":"Fall 2024 Course Material"}]},{"id":"Lp8tvIZ9OEyIzFG8DDzV","title":"Spring 2024 Course Material","pathname":"/archive/spring-2024-course-material","siteSpaceId":"sitesp_Ix0W3","breadcrumbs":[{"label":"Archive"}]},{"id":"QpYJfw7oufKKsmSrzrRJ","title":"Lecture 1 & Exercise 1: Introduction to Android","pathname":"/archive/spring-2024-course-material/1.-introduction-to-the-editor","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2024 Course Material"}]},{"id":"P3El3BBeRfY8kYazBXdc","title":"Lecture 4 & HW 4: LazyLists","pathname":"/archive/spring-2024-course-material/lecture-4-listview-and-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2024 Course Material"}]},{"id":"0du7huSa6Tg2SA3QndHm","title":"Lecture 6 & HW 6: Networking, Data, and Persistent Storage","pathname":"/archive/spring-2024-course-material/lecture-7-networking","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2024 Course Material"}]},{"id":"-MCFQmO7A41decIxNWtG","title":"Spring 2020 Course Material","pathname":"/archive/fall-2020-course-material","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"}]},{"id":"-M0LB8z5x596R82Z_ut6","title":"Week 1: Intro to the Editor","pathname":"/archive/fall-2020-course-material/week-1-intro-to-the-editor","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-M1Ue0_eBlMopHEFsu6c","title":"Week 2: Views and Layouts","pathname":"/archive/fall-2020-course-material/week-2-views-and-layouts","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-M20VNMnFeLmHti_-TD8","title":"Week 3: Intent and Manifest","pathname":"/archive/fall-2020-course-material/week-3-intent-and-manifest","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-M4jtB9Ppg5Uw3mEkTv4","title":"Week 4: ListView and RecyclerView","pathname":"/archive/fall-2020-course-material/week-4-listview-and-recyclerview","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-M5OOdW_gH9RIJLwHim6","title":"Week 5: Fragments","pathname":"/archive/fall-2020-course-material/week-5-fragments","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-M5xXyXZn2iRrMJNmpEU","title":"Week 6: Networking","pathname":"/archive/fall-2020-course-material/week-6-networking","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"},{"label":"Spring 2020 Course Material"}]},{"id":"-MY2PbMGhb8-1dd0XG6c","title":"Spring 2021 Lecture & HW 8: Networking & 3rd Party APIs","pathname":"/archive/lecture-and-hw-8-networking","siteSpaceId":"sitesp_Ix0W3","description":"","breadcrumbs":[{"label":"Archive"}]},{"id":"-MFV0WvXq0KVrRVjckdL","title":"HackOurCampus Workshop","pathname":"/archive/hack-our-campus-workshop","siteSpaceId":"sitesp_Ix0W3","description":"Scheduled for August 27 at 4pm ET","breadcrumbs":[{"label":"Archive"}]}]}