owned this note
owned this note
Published
Linked with GitHub
# Curriculum Videos - Providing Necessary Context
## Peeling the Layers of Context
One thing we want to see in these videos is providing the key context associated with each topic, that provides necessary framework for understanding each thing as it's presented. This includes answering the following:
* **Why are we learning this concept at all?** What specific user facing tasks are motivating this? _For example, for RecyclerView, it's very common to have a vertically scrolling list of items. It's probably > 90% of the screens that a user will see._
* **How does this concept relate to the immediate assignment or lab or group project?** _For example, RecyclerView is going to be used across all the assignments in different ways, but for Flixster, we will be using this to display the main list of movies users will scroll through._
* **How does this fit into the broader technical picture?** For example, for RecyclerView, it's the most complex view in Android, but it's the dominant workhorse for implementing scrolling lists, although you may occasionally see it's predecessor ListView mentioned occasionally. RecyclerView is more complex than ListView, but able to do more things.
* **How does this relate to other concepts we've already been introduced to?** _For example, RecyclerView is unique and different to other views we've seen because other views (TextView, ImageView) don't contain other views or items inside, and are often not scrollable. It's the primary way they will create lists of items._
* **What new technical "prerequisites" are triggered by this new concept?** _For example, RecyclerView uses new concepts like inflation and the view holder pattern. Important note: it might be better to intentionally gloss over certain concepts if you feel like it's too advanced for their current level. Often you might find that a complicated concept is best explained further in a later video._
* **What are the high-level conceptual "steps" involved in actually using this in their code?** _For example, RecyclerView requires 5 things to actually work: set the layout type, set the viewholder, ... and for the items to show up all 5 of these are required. Ideally, also show an example of all 5 steps in a basic code walkthrough._
## Examples:
A good example of addressing the level of the audience and providing context is Caren’s unit overviews for the beginner mobile app design course https://youtu.be/3FWui6JFYYk?list=PLrT2tZ9JRrf7BljVUct4hhlRQW_I-JKpv. When explaining a concept, she often demos the app, introduces things at a high level, points out various common issues that they run into, etc.
-----
## Video Code Walkthrough Best Practices
- Try to build an almost relentless habit for explaining the motivation for what we are doing at any time in simple language (i.e "We are trying to get data about the movies", "we are trying to display movies on the page").
- Contextualize each concept and task as they come up, for example, APIs or networking you might use simpler words to describe what's happening i.e "Networking is getting the list of movies somewhere on the internet, which we want to get into our app to display". Keep the mission clear at any point in time in simple language.
- You are speaking to a mid-level engineer, which is okay, but I think you assume a stronger level of understanding on abstractions than many of the students might have.
- Be sure at times to add comments in your code at key sections to describe the intention of the code we are writing. This helps students build an "intention map" between an english task and the code we are writing at any given point.
**Additional notes:**
- **Repeating motivation and coming back to it frequently**
- Connecting what we are doing at any given time back to the high-level
- "Every app you ever build will probably start with getting some information from the internet"
- "This task we are doing here, represents something you will be doing a lot as an engineer"
- **Minimize use of technical jargon/vocabulary**
- Triggers more cognitive load
- Explaining REST API: "We have to go and get our movies from the API",
- "Any app is going to have information in the cloud"
- "Similar pattern: Every app is a collection of nouns"
- "Facebook is Stories, Amazon is Products"
- No need at first to call it JSON or Array or Hashes, Keys/Values
- **Speak to your Audience**
- Java makes heavy use of abstractions, that can be confusing
- Class audience is Sophomore and explanations should be new coder friendly
- Some students have no exposure to "Singleton pattern", "Binding", other technical terms
- Here's the feedback we are trying to avoid:
- "I felt like I was just copying and pasting"
- RecyclerView for example
- Tell new coder when it's just code that has to be copy pasted
- If you don't need to know understand, explain that:
- "We are going to type out some boilerplate setup"
- "Just setting up, always the same except this one part"
- Recipe-based thinking
- Call out the things that matter and don't matter
- "Don't need to understand this part yet"
- **Communicate a clear intention map of your code**
- Make sure to use comments to describe your intention in english above a code block
- If there are 5 steps to making a recyclerview work, list out the 5 steps in comments
- Tag different ahead of time before writing code blocks with a clear description of what that block will do in plain languages