This document outlines the way we prefer to organize our lessons.
Brief Overview
- Start by explaining what will be built
- Give a brief overview of the technology or programming language that is going to be used
- Showcase the final product before starting
- If the demo is web based, point them to the demo URL (JSFiddle, Codepen, etc)
- If the demo is script based, point them to the source code
- This will allow advanced learners to play with the code while others catch up
Tools
- Make sure they have a common web browser and code editor present
- List the tools that will be used during the lesson
- If additional software is required:
- Ensure that the software is available on Mac and Windows
- Stick with freely available software
- When possible, link to the direct download URL
- For long links, use a URL shortener
- If a webservice is required:
- Ensure that no registration is required to use the service
- Check the service's browser compatibility
- If additional software is required:
Experience
- Check if the lesson requires prior knowledge
- For a certain technology (JS plugin or programming language):
- Confirm if it has been used before
- Check if students can recall previously taught syntax and concepts
- If using mathematial concepts:
- Check if the students are familiar with the concept
- Use analogies to explain the concepts, if complex
- For a certain technology (JS plugin or programming language):
Code
- Arrange code blocks as functions and useful chunks
- Use indicative variable names ( height instead of h)
- Use GitHub's extended markdown for syntax highlighting
- Add frequent screenshots of the stages of development
Explanation
- After every code block, explain what the aforementioned code does
- This can be conveyed in point form
- This section should be used for pointing out how different pieces (services, functions, etc) talk to each other
- Explanation can range from sharing a new concept to simply interpreting the code in english
Point out any additional customizations that can be performed to what was built. This could include changing values in the code to see different outcomes, changing colors of items or adding additional functionality.
- This can be treated as self driven or mentor directed
- List some possible customizations that can be performed (changing colors, enabling/disabling features, etc)
- This can be promoted by displaying customized demos where students try to replicate what is shown
Additional resources (cool demos, extensions, documentation, etc) can also be shown to students. This is optional.
Additionaly, some homework can be assigned after the lession (also optional) where students can combine work from the customization section or other criteria. An exercise, for example, can include converting a JSFiddle page to a HTML, CSS, JS page