Programming sits at the heart of everything I teach. Whether it’s a BTEC group writing their first loops or degree-level students implementing search algorithms, my aim is the same: confident, independent programmers who understand why their code works, not just that it does.
This area runs from the absolute foundations of Python through to the engineering discipline - testing, version control, design - that separates working code from professional code.
Topics I cover
Python foundations
Variables, control flow, functions, and file handling - taught through short, frequent lab exercises so students are writing and running real code from week one. Python’s readable syntax lets us focus on problem-solving rather than fighting the language.
Algorithms and data structures
Searching, sorting, recursion, and the classic structures - lists, stacks, queues, dictionaries, trees. Students learn to reason about efficiency with Big-O notation and to choose the right structure for the job rather than reaching for a list every time.
Object-oriented design
Classes, encapsulation, inheritance, and polymorphism, applied to projects large enough that good design actually pays off. We look at why OOP exists - managing complexity - not just its syntax.
Testing, debugging and version control
Reading error messages properly, writing unit tests, and using Git for history and collaboration. These habits are what employers notice first in a junior developer.
Explore: choosing a data structure
One of the most useful programming skills is knowing which structure fits the problem. Click or tap each stage to explore it.
How I teach it
Almost everything happens in hands-on lab sessions. Students work through progressively harder problems, build portfolio projects they can show employers, and learn the debugging mindset: form a hypothesis, test it, narrow it down.
Assessment mirrors industry practice - code reviews, documented repositories, and projects with real requirements rather than abstract exercises.
Test yourself
Three quick questions - click an answer to check it instantly.
1. Which data structure works on a last-in, first-out basis?
2. What is the time complexity of binary search on a sorted list of n items?
3. What does version control (e.g. Git) primarily give a development team?
Where this leads
These skills feed directly into every other area on this site - web development, databases, AI, and security all build on solid programming. Students leave able to take a specification, design a solution, and deliver tested, documented code: the core of any software development role.