Learning programming
Programming is best learned through sustained practice, experimentation, debugging, and exposure to increasingly complex problems over time.
My approach emphasises active engagement rather than passive consumption. Students learn most effectively when they are required to write code, make mistakes, investigate problems, and refine their understanding through repeated iteration.
Understanding programming also involves understanding systems. This includes how memory works, how data is represented, how programs interact with hardware, and how abstraction layers simplify underlying complexity.
The resources below are designed to support exploratory and interactive learning approaches.
Interactive resources
- Memory allocator visualiser — interactive visualisation of memory allocation concepts
- Abstraction layers — interactive visualisation of how code abstraction works
Learning principles
- Learn by writing and modifying code
- Expect confusion and debugging as part of learning
- Focus on systems and underlying mechanisms
- Use experimentation to build intuition
- Develop understanding gradually through practice