Modules offered across Honours, Masters, and PhD programmes in Computer Science.

Assigned supervisor
A large software construction or research problem on which the student works independently, under the supervision of a staff member.
Willem Bester
This module continues from Computer Science 214 and covers advanced topics in the design and analysis of algorithms and associated data structures. To…
Fabian Yamaguchi
This module provides an introduction to the discovery and exploitation of vulnerabilities in software systems. We learn to uncover vulnerabilities and…
Maria Keet
An overview of ontology engineering — including knowledge representation languages, automated reasoning, and methods and techniques for ontology devel…
William (Bill) Tucker
Theory, domains and critique of topics related to Computing and Society, such as human-centred computing; social development theories, critical analys…
Andries Engelbrecht
Introduction to a selection of topics in artificial intelligence and optimisation. Meta-heuristics. Swarm intelligence, including particle swarm optim…
Brink van der Merwe
This module gives an introduction to the functional programming paradigm.
Steve Kroon
Prominent machine-learning concepts and tasks. Selected feature extraction or dimensionality reduction techniques. Introduction to probabilistic model…
William (Bill) Tucker
Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Networ…
Cornelia Inggs
This module covers an overview of the field of concurrency, its theoretical principles, the design, implementation and verification of concurrent syst…
Andries Engelbrecht
This module is an introduction to selected topics in machine learning.
Bernd Fischer
An introduction to compiler design and construction, covering lexical analysis, parsing, semantic analysis, and code generation.
Marcel Dunaiski
This course covers the typical pipeline of data science projects: information retrieval, data wrangling and exploratory data analysis, hypothesis test…
Trienko Grobler
Algorithms and techniques in Space Science, with applications.
Gavin Rens
Topics covered are logic and knowledge representation, the Prolog language, deterministic automated planning, dynamic Bayesian networks and dynamic de…
Cornelia Inggs, Bernd Fischer, Willem Visser
Introduction to various techniques for software quality management.
Brink van der Merwe
A first introduction to theoretical computer science, covering the Chomsky hierarchy of languages in relation to computability.