Workshops
Workshops Delivered
Sessions designed and taught for a company training programme and for two engineering-school clubs, covering computer architecture and digital logic, ARM assembly, competitive programming and Python. Each was written from scratch: slides, exercises and worked solutions.
-
Introduction to CS Fundamentals (Hardware)
Two sessions for the OLIVE-LEARN programme, tracing a running program from the instruction pipeline down to the logic gates that execute it.
- Part 1 — Efficient code execution: CPU instruction pipelining, the memory hierarchy and caching, and how DMA, the NIC and the APU move work off the core.
- Part 2 — Circuit-level computation: built up from SR and D latches to a 4-bit register, 1-bit and 4-bit adders, and an arithmetic logic unit.
-
Low-level programming taught from the hardware upward, with every slide, exercise and solution published as a public repository.
- Hardware groundwork: chipsets, buses, and the path an instruction takes to reach the CPU.
- ARM assembly: definitions, the core instruction set and worked examples, followed by guided exercises.
- Each exercise solved twice — once in ARM assembly, once in Python — so the cost of an abstraction was visible side by side.
- Extension material: a Breakout game implemented in x86 assembly alongside C and C++ versions, for participants continuing on their own.
-
Introduction to Competitive Programming
An entry point into contest-style problem solving, aimed at students with working code but no method for choosing an approach.
- Complexity analysis first: reading a problem’s constraints to rule out approaches before writing any code.
- The core data structures and the recurring algorithm patterns that most contest problems reduce to.
-
Introduction to Python
A beginner track taught through two builds rather than through syntax slides.
- A console tic-tac-toe game: representing board state, validating input and detecting a win.
- A short data exercise: reading a CSV file and plotting it as charts.