# CodePath.org Android - Curriculum Creation Guidelines This is a guide on best practices for Android University content creation. **Jump to a section:** * [Lab Workshops](#🔬-Lab-Workshops) * [Topic Videos](#📹-Topic-or-Concept-Videos) * [Topic Guides](#📑-Topic-Guides) ## 🔬 Lab Workshops Labs are standalone small workshops with checkpoints that take place during class session time and are designed as a chance for students to gain hands on experience with a specific topic or set of topics in focus for that lab. Usually a lab session will start with a kick-off by the instructor or facilitator and then give the students as much time as possible to work by following the written instructions to complete the lab step-by-step. Depending on the format of the class, it can span either 90 minutes or 2 hours. The goal of the lab is to provide students with a chance to practice key concepts for that week which will be encountered again in the assignment. Labs should be designed to reinforce and deepen knowledge about the topics being introduced or focused on that week, either to aid on the assignment or in the later weeks to aid on the group projects. ### Best Practices / Anti-Patterns - Make the lab checkpoints super clear and concrete - Troubleshooting tips to help students get unstuck - Have a lot of visuals and illustrations (diagrams, drawings, screenshots, app examples) - Throw in extra time to make it all super clear, and spelled out so students never get confused - When making the lab, think of what values we want to pass onto students  - Ex: making them run their apps often to ensure they work in between steps ### Formats The format of the lab itself can take the shape of either: 1) A small standalone project that's completeable within a 2 hour period, broken down step-by-step with checkpoints - For example: Cloning a UI screen 2) Small individual task covering the same general topic - For example: A debugging lab where students try to fix various bugs in an existing project given to them Labs can either: 1) Be built off a starter project code that the students import and then build off of - For example: It may make sense to give the students a simple starter project that already has some necessary components built. This can help direct the time students spend on the lab on understanding the key concept. 2) Be built from scratch with the student implementing it from beginning to end by following the written steps working through each lab checkpoint ### [Lab Template](https://hackmd.io/@YargtAEbS02eDE3upLu27g/HJPctt-38) :point_up_2: This markdown can be used as a rough outline of the major sections that would be covered for a lab. ### Hints / Troubleshooting Each lab should ideally also have a 'hints' or 'troubleshooting' page that anticipates common problems students may run into and how to debug them. Hints can be linked from the lab page and can be stored in a HackMD. This 'hints' page may be difficult to create for a brand new lab, as many problems are usually not surfaced until some students have been able to test drive the lab. ### Additional Guide on Lab Creation https://books.codepath.org/instructional-design/-M4jel5SolPdJdidWV9n/curriculum/developing-new-labs ## 📹 Topic or Concept Videos Topic videos serve as an additional way to help students learn a concept by walking them through the context and code walkthroughs related to further their understanding. In contrast with written guides, videos have a unique role in allowing us to showcase how to implement these concepts through live coding. Android University held on campuses are led by student leaders or professors who may not be Android experts. These videos serve a critical role in helping students understand certain topics and the context behind them that will be necessary for them to feel confident in completing their assignments and group project. ### Format The general format for a concept video should include: - An introduction on the topic presented through slides - Code walkthrough of using the concept in a project Example: An example video on RecyclerView may look something like: - Introduction on RecyclerView - Why are RecyclerViews so important in Android development? - Show some examples of where RecyclerViews are implemented in popular apps - What are the different components to build a RecyclerView and how do they connect with each other - Code walkthrough in Android Studio of building a RecyclerView from scratch ### General Best Practices - Try to provide crucial context behind each topic, and avoid overly technical jargon that isn't needed. See [this guide for more insight into providing proper context](https://books.codepath.org/instructional-design/-M4jel5SolPdJdidWV9n/curriculum/including-context-in-videos). - When doing the code walkthrough, prepend comments to code you write. This will help students gain more context to the code that's being written. - While coding, rerun your app often to help enforce in students the idea of incremental development. - Add logging statements when coding to help reinforce the importance of using logging statements to help debug. - Sometimes it can be good to have a bug in your first coding implementation, so that you can show students how to debug the problem in the later part of the video. Additional tips: - Review the surrounding context like labs, assignments and course content ahead of filming to make sure it's relevant and consistent - Make a script where you outline the key points - Try multiple takes on each video, your first one will be rough, that's normal. - Avoid too much technical jargon and use laymen terms. Be intentional when introducing jargon. - Provide a lot of context when introducing things. Take the time to explain why and the significance of each step of the process  ### Guide on Video Setup, Recording, and Production https://hackmd.io/@nesquena/rogers-guide-to-recording ### Examples https://www.youtube.com/watch?v=y7OKzVdzzuM This video is part of a series of videos that walk students through an assignment. It's not a topic video, but the way the code walkthrough is presented is a good example of what you would want to do in your video. ## 📑 Topic Guides Topic guides are another way to help students learn a concept in an easy to consume practical written form. In contrast to videos, topic guides are meant to help students get started with something with the least amount of friction. Guides [live in this Github open-source wiki](https://github.com/codepath/android_guides/wiki). All pages in that wiki can be edited and new pages can be created. You can then see all pages on that wiki are also available and searchable [on our topic guides front-end](http://guides.codepath.org/android). You can add any new generally useful topic guide as a page there. Or a class specific topic guide as a HackMD. Topic guides should always include basic context for the importance of this topic, the basic code needed to implement that specific concept from beginning to end, and images/screenshots whenever possible. You can see the [contributing guidelines](https://github.com/codepath/android_guides/wiki/Contributing-Guidelines) for more details. ### Best Practices and Anti-Patterns - Make topic guides very practical - Cut the fluff, and the internals or abstract info - Get to the point with specific relevant use cases  - Avoid too much theory and keep it relevant to the work the person is actually doing - Think of use cases and how to implement those use cases, and specifically focus on concisely providing all the code to complete those top use cases step by step. Explaining the code along the way. ### Topic Guide Examples - [Using the RecyclerView](https://guides.codepath.org/android/using-the-recyclerview) - [Creating and Using Fragments](https://guides.codepath.org/android/Creating-and-Using-Fragments) - [Sending and Managing Network Requests](https://guides.codepath.org/android/Sending-and-Managing-Network-Requests) You can see dozens of additional topic guides by visiting [the topic guides index](https://guides.codepath.org/android)