Lesson Plan

Lesson Plan
Grade: Date: 17/01/2026
Subject: Computer Science
Lesson Topic: Show an understanding of abstraction
Learning Objective/s:
  • Describe what abstraction is and why it is used in programming.
  • Identify and differentiate data, control, and procedural abstraction.
  • Apply abstraction to design a sorting algorithm using pseudocode and then implement it in a high‑level language.
  • Evaluate the effectiveness of different abstraction levels in a given problem.
Materials Needed:
  • Projector and screen
  • Whiteboard and markers
  • Student laptops with a Python IDE installed
  • Printed handout of the “Levels of Abstraction” table
  • Sample data sets (lists of numbers) for sorting activity
Introduction:

Begin with a quick demo of a smartphone app that hides complex code behind a simple interface to hook students. Review the previous lesson on algorithms and ask students how they might simplify a problem before coding. Explain that today they will learn to use abstraction to manage complexity and will be able to recognise and create different abstraction levels.

Lesson Structure:
  1. Do‑Now (5'): Students list everyday examples where details are hidden (e.g., ATM, video game). Share a few responses.
  2. Mini‑lecture (10'): Define abstraction, discuss why it matters, and introduce data, control, and procedural abstraction with brief examples.
  3. Guided example (15'): Walk through the step‑by‑step sorting problem, showing identification of the core task, choice of abstraction level, and writing pseudocode.
  4. Pair programming activity (20'): Teams translate the pseudocode into Python, test with provided data sets, and note any issues.
  5. Whole‑class review (5'): Groups present their code, highlighting how abstraction helped them focus on logic.
  6. Exit ticket (5'): Students write one sentence describing a situation where over‑abstracting could cause problems.
Conclusion:

Recap the four key points: definition of abstraction, the three types, the layered abstraction hierarchy, and its benefits for reuse and debugging. Collect exit tickets and briefly discuss common pitfalls. For homework, assign students to choose a simple real‑world task and produce a three‑level abstraction diagram (problem domain, pseudocode, and high‑level code).