# Lesson plans

> 1. Remember that no lesson survives first contact with learners…
> 2. …that every lesson is too short for the teacher and too long for the learner…
> 3. …and that nobody will be more excited about the lesson than you are.
>    * The Rules, from [teachtogether.tech](https://teachtogether.tech/#the-rules)

## Lesson Plans for Programming

A general recipe for a successful lesson:

1. Motivate
2. Isolate
3. Practice
4. Integrate

## Lesson Plans at HYF

At HYF our students have an especially wide range of skill & experience levels, this makes it very challenging to effectively teach a subject to all students at once. Approaching your Sunday lessons more like a focused workshop with a general introduction to all topics for the week will help reach all students. When working in small groups, they can adjust the pace to their own levels, and the scope of the lesson can be kept realistic.

One of the most helpful things you can do for students is to be very clear about what they are expected to learn _in class_ with your guidance, and what they are expected to learn on their own afterwards. ie. are you talking about static methods right now because you expect students to be able to use them by the end of class, or because they should know it's important for when they study at home?

Being very clear about what is expected before vs. during vs. after class will help you prepare, and help students concentrate their efforts (and manage their stress ;)

> this list intentionally refers to what a student can _do_ instead of what they _know_.

* What can students do before the lesson starts?
* What are the learning objectives _for class time_?
* What does a student need to do after the lesson?
* What are your practical constraints?

## References

* [A Lesson Design Process](https://teachtogether.tech/#s:process)
* [https://files.eric.ed.gov/fulltext/ED566953.pdf](https://files.eric.ed.gov/fulltext/ED566953.pdf)
* [https://www.youtube.com/watch?v=GEmuEWjHr5c](https://www.youtube.com/watch?v=GEmuEWjHr5c)
* [https://www.codementor.io/@npostolovski/how-to-teach-programming-pvgpdtoed#setting-up-the-teaching-environment](https://www.codementor.io/@npostolovski/how-to-teach-programming-pvgpdtoed#setting-up-the-teaching-environment)
* Motivate, Isolate, Practice, Integrate:
  * [the original paper](https://dl.acm.org/doi/pdf/10.1145/2674683.2674690) (the talk about paradigms is not relevant to this topic)
  * a lesson plan based on this pattern - [async programming week 1](https://hackyourfuture.be/asynchronous-programming/week-1/#/)

## [Exercises](https://github.com/HackYourFuture-CPH/teacher-curriculum/tree/ac6e9b35f8f3609f95e3306f1381abfc0c729b67/exercises/lesson-plans.md)

## Learning Paths

* [Teaching the class](../learning-paths/teaching-the-class)
