- Honours in Computer Science
- Masters in Computer Science
- Doctorate in Computer Science
Honours in Computer Science
Computer Science Stream The Honours degree is a one-year full-time postgraduate programme that usually follows after the three-year BSc or BCom degree. It is excellent preparation for pursuing either an MSc degree or a career in industry.
Students are required to work more independantly than during their undergraduate studies, especially on their project. At the start of the year each student chooses a year-project, a large-scale software construction or research problem, to work on independantly, under the supervision of a staff member. Students also complete six modules, chosen from a number of advanced topics in Computer Science, and classes often include discussions on known solutions, cutting edge research, or open problems in the field studied.
The Honours degree is challenging and hard work. However, we pride ourselves on the fact that our graduates are highly sought after. The degree can have a significant impact on your salary and many companies insist on a four-year degree. Further information, such as application procedures and a FAQ, is available on our page for Prospective postgrauate students.
Data Science Stream In the modern era, there is an increasing demand for people able to efficiently deal with the large quantities of data available in all aspects of life. This stream considers the major aspects related to dealing with data. Because understanding the properties of data and using it responsibly has essential statistical underpinnings, we require students to have a background in Mathematical Statistics, and also to take certain honours modules from the Mathematical Statistics honours programme as part of their degree. For further information and queries specificaly about the data science stream send an email to email@example.com;
Current honours students
- Goto our page for the Honours class of 2021 for information specific to this year.
|63444-771||Honors Project in Computer Science (CS771)||(1st and 2nd Semester)||(Honours)|
The Honours curriculum comprises 6 modules and a year project. Each module is worth 16 credits, while the project is worth 32 credits. Students may earn at most 32 credits from outside the Computer Science Division towards their Honours degree, but this is subject to the consent of Computer Science. Students are expected to devote at least 12 hours per week per module, including lectures. The rest of the time should be devoted to the year project.
|18139-797||Honours Overview (CS797)||(1st and 2nd Semester)||(Honours)|
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 Department of Mathematical Sciences (Division 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.
First Semester Modules
|64947-712||Advanced Algorithms (CS712)||(1st Semester)||(Honours)|
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 Computer Science (CS713)||(1st Semester)||(Honours)|
The module continues from Computer Science 324 and covers time and space complexity, NP completeness, probabilistic algorithms, interactive proofs, and zero knowledge proofs. It concludes with a overview of quantum computers and quantum algorithms.
|64963-714||Concurrent Programming 1 (CS714)||(1st Semester)||(Honours)|
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 in Computer Science 1 (CS716)||(1st Semester)||(Honours)|
Selected topics of current interest presented by lecturers or visiting researchers.
|14195-742||Machine Learning A (CS742)||(1st Semester)||(Honours)|
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.
|14066-791||Space Science Algorithms (CS791)||(1st Semester)||(Honours)|
Algorithms and techniques in Space Science, with applications.
Second Semester Modules
|63452-711||Automata Theory & Applications (CS711)||(2nd Semester)||(Honours)|
An introduction to the theory of automata and computability.
|11788-741||Machine Learning (CS741)||(2nd Semester)||(Honours)|
This module is an introduction to selected topics in machine learning.
|65005-743||Simulation of Networks (CS743)||(2nd Semester)||(Honours)|
This course presents some models which are used to evaluate the performance of communication networks.
|65048-746||Advanced Topics in Computer Science 2 - Vulnerability Discovery and Exploitation (CS746)||(2nd Semester)||(Honours)|
This module provides an introduction to the discovery and exploitation of vulnerabilities in software systems. Taking on the attacker perspective, we begin by reasoning about the circumstances that turn seemingly minor programming flaws into gateways for unauthorized access. We learn how to uncover attack surface, determine trust relationships, review code for design and implementation flaws and demonstrate their exploitability. With these practical experiences in mind and an appreciation for the difficulty of the task, we proceed to focus on methods for automating parts of the discovery process, both via static and dynamic program analysis. We learn about fuzz testing and instrumentation, static analysis of control- and data flow, the usefulness of type systems for vulnerability discovery, and variant analysis based on intermediate graph representations of code.
|13944-795||Functional Programming (CS795)||(2nd Semester)||(Honours)|
This module gives an introduction to the functional programming paradigm
|14065-796||Software Verification and Analysis (CS796)||(2nd Semester)||(Honours)|
Introduction to various techniques for software quality management.
Masters in Computer Science
|18139-878||Masters Overview (CS878)||(MSc)|
Independent research on an approved topic as determined by the supervisor(s) and leading to a thesis is required.
Our Masters degree is a two-year programme based on thesis work. The goal is to teach students how to evaluate and conduct world-class research, and become a master in their field! While the work is not required to be original cutting-edge research, it often is. The reading, writing, and critical thinking skills acquired during the Masters degree are also much sought-after in industry, and most of our Masters graduates who do not carry on with a Doctoral degree, go on to have successful careers in the local industry and also abroad. Further information, including application procedures and a FAQ, is available on our page for Prospective postgrauate students
Doctorate in Computer Science
|18139-978||PhD Overview (CS978)||(PhD)|
A dissertation containing the results of your independent research is required.
Our doctoral degree is a three-year programmed based solely on dissertation work. The goal is to conduct original, cutting-edge research in a particular, specialised field of Computer Science. The student must demonstrate his/her ability to propose, plan, conduct, and publish a research project. Further information, including application procedures and a FAQ, is available on our page for Prospective postgrauate students.