|18139-797||Honours in Computer Science|
Stream Computer Science. This stream 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 Computer Science. Not all modules are necessarily offered each year. Stream Data Science. This stream consists of 5–8 compulsory modules which includes a compulsory programming project. The remaining credits to reach the required credit total are modules in Computer Science or selected modules in Mathematical Statistics. Not all modules are necessarily offered each year.
|18139-878||Masters in Computer Science|
Independent research on an approved topic as determined by the supervisor(s) and leading to a thesis is required.
|18139-978||PhD in Computer Science|
A dissertation containing the results of your independent research is required.
|63444-771||Honors Project in Computer Science||(1st and 2nd Semester)|
A large software construction or research problem on which the student works independantly, under the supervision of a staff member.
First Semester Modules
|64947-712||Advanced Algorithms||(Willem Bester)||(1st Semester)|
This course resumes the study of algorithms and data structures where it left off in RW214. We discuss various algorithmic paradigms (such as divide-and-conquer, greedy algorithms, dynamic programming, and randomized algorithms), algorithmic applications (such as graphs, heaps, and trees), and the basics of the theory of computation.
|64955-713||Theoretical CS - Advanced Automata||(Lynette van Zijl)||(1st Semester)|
This course is an advanced course in automata theory. It covers diverse topics, such as combinatorics on words, cellular automata, descriptional complexity, and advanced automata such as 2-way, Mealy, and Moore machines. Note that CS345 is a prerequisite for this course.
|64963-714||Concurrent Programming I (314*)||(Cornelia Inggs)||(1st Semester)|
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.
|64971-716||Advanced Topics I - Computing and Society||(William (Bill) Tucker)||(1st Semester)|
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.
|14195-742||Machine Learning A (315*)||(Steve Kroon)||(1st Semester)|
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.
|14232-791||Artificial Intelligence||(1st Semester)|
Second Semester Modules
|63452-711||Automata Theory & Applications (345*)||(Lynette van Zijl)||(2nd Semester)|
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.
|11788-741||Machine Learning||(Andries Engelbrecht)||(2nd Semester)|
This module is an introduction to selected topics in machine learning.
|65013-744||Concurrent Programming II - Software Testing and Analysis||(Cornelia Inggs, Willem Visser, Bernd Fischer)||(2nd Semester)|
Introduction to various techniques for software quality management.
|65048-745||Advanced Topics II - Principles of Data Science||(Marcel Dunaiski)||(2nd Semester)|
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.
|14066-791||Space Science Algorithms||(Trienko Grobler)||(2nd Semester)|
Algorithms and techniques in Space Science, with applications.
|13944-795||Functional Programming||(Brink van der Merwe)||(2nd Semester)|
This module gives an introduction to the functional programming paradigm
|14065-796||Soft. Verif. and Analysis - Vulnerability Discovery and Exploitation (TBC in April if it will be offered in 2022)||(Fabian Yamaguchi)||(2nd Semester)|
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.