A proof-driven, implementation-focused study of algorithm design: correctness, complexity, searching, recursion, sorting, backtracking, dynamic programming, greedy methods, string matching, graph algorithms, network flow, and computational limits.
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.
A complete path from functional units and register-transfer design through instruction sets, arithmetic, control, memory, pipelines, I/O, DMA, and multiprocessor systems.
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.
A representation-first study of arrays, linked lists, stacks, queues, graphs, trees, search trees, heaps, hash tables, and disjoint sets in C.
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.
A complete introduction to C17: program construction, expressions, control flow, functions, arrays, strings, pointers, memory, files, modularity, testing, and debugging.
HTML, CSS, JavaScript, HTTP, and server-side fundamentals — building interactive, data-driven web applications from scratch.
No courses match your filters.