Programming & Software Development

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.

·····

Select a stage above to see what it involves.

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.

Latest Blog Post

Nicki James Shepherd on why AI in education keeps getting disability wrong


Scroll to Top