Sorting, searching, recursion, graph algorithms, dynamic programming, greedy strategies, string matching, and the limits of efficient computation — reasoning rigorously about correctness and efficiency, in C.
teaching
Teaching
A collection of courses, notes, and materials I teach across different academic terms.
Intelligent agents, state-space search, constraint solving, optimization, adversarial reasoning, symbolic knowledge, uncertainty, Bayesian and fuzzy systems, generative models, and responsible AI.
Decomposition, pattern recognition, abstraction, and algorithmic thinking as a foundation for programming and formal reasoning.
CPU design, instruction sets, memory hierarchy, caching, pipelining, and the interface between hardware and low-level software.
The TCP/IP stack, routing, DNS, HTTP, TLS, and network programming — how data moves reliably across interconnected systems.
Threat modelling, common attack classes, cryptography, authentication, and defensive practices for building more secure systems.
Arrays, linked lists, stacks, queues, graphs, trees, heaps, and hash tables — choosing and implementing the right structure for the problem.
Relational models, SQL, normalisation, transactions, indexing, and an introduction to NoSQL — storing and querying structured data reliably.
Requirements analysis, system modelling, architecture patterns, and evaluation — designing information systems that meet organisational needs.
Supervised and unsupervised learning, model selection, regularisation, neural networks, and evaluation — building systems that learn from data.
Classes, objects, inheritance, polymorphism, and encapsulation — modelling real-world domains as cooperating objects.
Processes, threads, scheduling, memory management, file systems, and synchronisation — how an OS manages hardware and isolates programs.
Variables, control flow, functions, and I/O using a procedural language — building readable, maintainable programs from the ground up.
HTML, CSS, JavaScript, HTTP, and server-side fundamentals — building interactive, data-driven web applications from scratch.
No courses match your filters.