Skip to main content

Postgraduate programmes

Programmes

This programme consists of 6 modules of 16 credits each, as well as a compulsory programming project of 32 credits. At most two modules may be taken from related departments with the permission of the Department of Mathematical Sciences (Division Computer Science). Not all modules are necessarily offered each year.

Independent research on an approved topic as determined by the supervisor(s) and leading to a thesis is required.

A dissertation containing the results of your independent research is required.

Year Modules

A large software construction or research problem on which the student works independantly, under the supervision of a staff member.

63444-771semester 1&2

First Semester Modules

Advanced Algorithms

This module continues from Computer Science 214 and covers advanced topics in the design and analysis of algorithms and associated data structure. Topics include a selection from algorithm design techniques, linear programming, approximation algorithms, randomised algorithms, probabilistic algorithms, parallel algorithms, number-theoretic algorithms, cryptanalysis, computational geometry, computational biology, network algorithms, and complexity theory.

64974-712semester 1Willem Bester
Advanced Topics 1 - Vulnerability Discovery and Exploitation

This module provides an introduction to the discovery and exploitation of vulnerabilities in software systems. We learn to uncover vulnerabilities and demonstrate their exploitability and then proceed to focus on methods for automating parts of the discovery procoess, both via static and dynamic program analysis.

64971-716semester 1Fabian Yamaguchi
Advanced Topics II - Ontology Engineering

The principal aim of this module is to provide the participant with an overview of ontology engineering—including knowledge representation languages, automated reasoning, and methods and techniques for ontology development—and main application fields. Ontologies are used in a wide range of applications and back-end computing tasks, such as data integration, information retrieval, and natural language processing. While some of these application areas pass the revue, the main focus of the course is on principles of ontology development an its software ecosystem. The topics covered include the following: Logic foundations for ontologies: Languages and Automated reasoning. Ontology development: Ontology engineering top-down & bottom-up; Methodologies for ontology development and maintenance, methods to enhance ontology quality; a selection of current research topics.

65048-746semester 1 Maria Keet

Computing and Society

Theory, domains and critique of topics related to Computing and Society, such as human-centred computing; social development theories, critical analysis of case studies; methods and ethics; and challenges of sustainable community engagement.

14533-771semester 1William (Bill) Tucker
Artificial Intelligence

Introduction to a selection of topics in artificial intelligence and optimisation. Meta-heuristics. Swarm intelligence, including particle swarm optimisation and the ant colony meta-heuristic. Evolutionary computation, including genetic algorithms, genetic programming, evolutionary programming, evolutionary strategies, differential evolution, cultural algorithms, and coevolution. Hyper-heuristics. Fitness landscape analysis. Optimisation problems, including unconstrained, constrained, multi-objective, manyobjective, dynamic, multi-modal and large-scale optimisation problems.

14232-791semester 1Andries Engelbrecht
Functional Programming

This module gives an introduction to the functional programming paradigm

13944-795semester 1Brink van der Merwe
Machine Learning A (315*)

Prominent machine-learning concepts and tasks. Selected feature extraction or dimensionality reduction techniques. Introduction to probabilistic modelling and latent variable models. Fundamental paradigms in parameter estimation.

14195-742semester 1Steve Kroon
Computer Networks (313*)

Unless you have completed Computer Science 313 or an equivalent, the following Computer Science module is compulsory. Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Network security. Applications.

14530-711semester 1William (Bill) Tucker
Concurrent Programming I (314*)

Unless you have completed Computer Science 314 or an equivalent, the following Computer Science module is compulsory. This module covers an overview of the field of concurrency, its theoretical. principles, the design, implementation and verification of concurrent systems, and practical aspects of distributed and parallel programming. It is focused around selected important topics.

64963-714semester 1Cornelia Inggs

Second Semester Modules

Machine Learning

This module is an introduction to selected topics in machine learning.

11788-741semester 2 Andries Engelbrecht 
Software Construction Compilers
65021-745semester 2Bernd Fischer
Principles of Data Science

This course covers the typical pipeline of data science projects: information retrieval, data wrangling and exploratory data analysis, hypothesis testing and regression analysis, as well as visualisations and data ethics."

14531-771semester 2Marcel Dunaiski
Space Science Algorithms

Algorithms and techniques in Space Science, with applications.

14066-791semester 2Trienko Grobler
Machine Learning and Artificial Intelligence I - Cognitive Robotics

Most topics in this course fall under the branch of artificial intelligence called Cognitive Robotics. Topics covered are logic and knowledge representation, the Prolog language, deterministic automated planning (based on the planning domain definition language), dynamic Bayesian networks and dynamic decision networks, Boolean and arithmetic circuits, the ProbLog language, probabilistic planning (based on Markov decision processes), and an introduction to reinforcement learning.

14888743semester 2Gavin Rens
Software Testing and Analysis

Introduction to various techniques for software quality management.

14065-796semester 2Cornelia Inggs / Bernd Fischer / Willem Visser
Automata Theory & Applications (345*)

This course is a first introduction to theoretical computer science, and covers the Chomsky hierarchy of languages in relation to computability. Note that you may not take this course if you had already completed CS345.

63452-711semester 2Brink van der Merwe