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-771 | semester 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-712 | semester 1 | Willem 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-716 | semester 1 | Fabian 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-746 | semester 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-771 | semester 1 | William (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-791 | semester 1 | Andries Engelbrecht |
Functional Programming
This module gives an introduction to the functional programming paradigm
| 13944-795 | semester 1 | Brink 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-742 | semester 1 | Steve 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-711 | semester 1 | William (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-714 | semester 1 | Cornelia Inggs |
Second Semester Modules
Machine Learning
This module is an introduction to selected topics in machine learning.
| 11788-741 | semester 2 Andries Engelbrecht |
Software Construction Compilers
| 65021-745 | semester 2 | Bernd 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-771 | semester 2 | Marcel Dunaiski |
Space Science Algorithms
Algorithms and techniques in Space Science, with applications.
| 14066-791 | semester 2 | Trienko 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.
| 14888743 | semester 2 | Gavin Rens |
Software Testing and Analysis
Introduction to various techniques for software quality management.
| 14065-796 | semester 2 | Cornelia 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-711 | semester 2 | Brink van der Merwe |