Skip to main content

Undergraduate programmes and modules

BSc Computer Science is the primary option for students who want to pursue a career in software development. This degree is an international qualification that enables you to find work at national and international companies. With the appropriate electives it can also lead to an honours programme in Computer Science (see our information for prospective PG students for more information on the appropriate electives) or to an honours programme in another subject, such as Applied Mathematics, Economics, General Linguistics, Mathematical Statistics, Mathematics, Operations Research, and Statistics.

Many disciplines now require some knowledge of how to write computer code and in many programmes students learn to use particular software, such as MS Excel, Matlab, or R for data analysis.

In Computer Science the focus is on software development. This page lists programmes at Stellenbosch that include a full Computer Science curriculum, as well as most programmes that include some Computer Science modules. The information is given for general guidance, but may be out of date; it is important to confirm details in the University calendar (yearbook). If you consider applying then also read our information for prospective students.

BSc Computer Science (CS) Programme

The General Computer Science focal area combines a Computer Science major with a choice of Science modules. Please consult Section 7.4.1 of the Science calendar for a list of the compulsory and elective modules for this focal area.

The Computer Systems focal area combines a Computer Science major with a selection of Electric and Electronic Engineering modules. Please consult Section 7.4.2 of the Science calendar for a list of the compulsory and elective modules for this focal area.

The Data Science focal area combines a Computer Science major with Statistics and Data Science modules. Please consult Section 7.4.3 of the Science calendar for a list of the compulsory and elective modules for this focal area.

BDatSci Programme

BDatSci with focal area Computer Science combines Computer Science with Statistics and Data Science modules. BDatSci is a four-year degree, which consists of a set of core compulsory modules on all year levels. Please consult Section 7.6.1 of the Science calendar for a list of the modules for this focal area.

First year CS modules

Introduction to computer programming from a financial perspective. Basic financial problems are rephrased in terms of analytical problem solving. Standard imperative programming constructs including types of variables, assignments, if-then-else and loops, and recursive approaches are covered as needed in financial programming. Static data structures (in particular arrays) and declarative programming models such as spreadsheets are also covered.

CS113semester 1

Introduction to basic computer programming; formulation and solution of problems by means of computer programming; data representation and variable types (including character strings, integers, floating point numbers and Boolean variables); assignment statements; conditional execution and iteration; static data structures (arrays and records); input and output (including graphics and sound); modular programming; recursion; testing and debugging; introduction to object-oriented programming (including abstraction, encapsulation and use of existing object implementations).

CS114semester 1

Further formulation and solution of problems by means of computer programming; introductory data structures and algorithms in an object-oriented set-up; key concepts in object orientation: inheritance and polymorphism; design patterns as abstractions for the creation of reusable object-oriented designs; searching and sorting algorithms; complexity theory for the analysis of algorithms; fundamental methods in the design of algorithms; dynamic data structures; regular expressions and finite automata.

CS144semester 2

Second year CS modules

Formulation and solution of problems by means of computer programming in an object-oriented set-up; principles of testing and debugging; key concepts in object orientation: abstraction, encapsulation, inheritance and polymorphism; design patterns as abstractions for the creation of reusable object oriented designs; searching and sorting algorithms; complexity theory for the analysis of algorithms; fundamental methods in the design of algorithms; dynamic data structures.

CSE214semester 1

The classical data structures and algorithms in an object-oriented set-up. Advanced techniques for the analysis of algorithms.

CS214semester 1

The classical data structures and algorithms in an object-oriented set-up. Advanced techniques for the analysis of algorithms.

CS244semester 2

Introduction to Linux; Linux commands; Linux file systems; editors; process control. Introduction to programming in Python: variables, types, control structures, loop structures, functions, files and directories, strings, unit testing, basic data processing. Introduction to numerical computing using Numpy; plotting and curve fitting.

SC272semester 1&2


 

Third year CS modules

Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Network security. Applications.

CS313semester 1

Introduction to programming techniques and principles of concurrent systems, from operating systems to application programs. This includes communication, synchronisation, scheduling and load balancing. Several parallel and distributed architectures will be covered.

CS314semester 1

Unless you have completed Computer Science 315 or an equivalent, the following Computer Science module is also compulsory. Dimension reduction techniques; machine-learning techniques based on maximum-likelihood, maximum-posterior and expectation-maximization estimates; modelling using logistic regression, Gaussian mixtures and hidden Markov models.

CS315semester 1

Introduction to relational databases. Mapping relational model onto object model. Implementing a database application in the context of the web. Web services. Server-side scalability. Virtualisation. Cloud Computing.

CS343semester 2

Program specifications as guidelines for program design; reusable frameworks for program design; testability of program designs; development of a medium-sized system to illustrate the practical application of the principles of program design.

CS344semester 2

Introduction to automata theory and formal languages, computability and complexity. Regular languages, context-free languages and grammars. Turing machines. P vs NP problem and NP completeness.

CS344semester 2

Scientific-document construction and presentations in LaTeX. Regular expressions. Important algorithms including sorting, searching and random-number generation. Advanced computing in Python with Numpy and Scipy; applications including pattern searching, processing of large empirical data sets and constructing data-processing pipelines. Other scientific tools in Linux.

SC372semester 1&2

Fourth year CS modules for BDatSci

Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Network security. Network applications. Network research technique.

CS411semester 1

Introduction to networks in general and the internet in particular. Architecture and protocols. Allocation of resources and congestion control. Network security. Network applications. Network research technique.

E414semester 1

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.

CS412semester 1

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

CS441semester 2

The research assignment provides students with a comprehensive learning experience that integrates knowledge from previous courses. The student will integrate knowledge and experiences gained from all previous modules and apply this to a data-rich research topic. Students will have the opportunity to synthesise what they have learned and apply that knowledge to new, complex situations. Students should engage in the entire process of solving a real-world data science problem, from collecting and processing actual data, to applying suitable and appropriate analytic methods to the problem, and communicating the results in a clear and comprehensive way.

CS471semester 2

Algorithms and techniques in Space Science, with applications.

CS491semester 2

This module gives an introduction to the functional programming paradigm

CS495