The School of IT offers the following undergraduate courses from the department of Computer Science. Click on the links for more information.

First-year courses

Credit will not be given for CSC1015F and CSC1016S together with CSC1010H and CSC1011H.

Second-year courses

Third-year courses


Full information on first-year courses

CSC1010H COMPUTER SCIENCE 1010

NOTE: This course only begins in week 7 and is intended for students who have been advised to transfer to this course after initially registering for CSC1015F (see entry for CSC1015F). The course places an emphasis on the strengthening of foundational concepts and skills, the carefullypaced introduction of new material, and the development of sound approaches to effective learning. CSC1010H is equivalent to CSC1015F in level, credit value towards the degree and as prerequisite for certain other courses.
18 NQF credits at NQF level 5
Convener: G Stewart
Course entry requirements: The permission of the Dean or Head of Department is required prior to registration for this course.
Course outline: This course is an introduction to problem solving, algorithm development and programming in the Python language. It includes fundamental programming constructs and abstractions, sorting and searching techniques, and machine representations of data. The practical component covers input/output, conditionals, loops, strings, functions, arrays, lists, dictionaries, recursion, text files and exceptions in Python. Students are taught testing and debugging, as well as sorting and searching algorithms, algorithm complexity and equivalence classes. Number systems, binary arithmetic, boolean algebra and logic gates are also introduced
Lecture times: Monday - Friday, 5th period, Tutorials: One per week, replacing one lecture, Practicals: One per week, Thursday, 14h00 - 17h30
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Theory tests count 15%; practical tests and practical assignments count 25%; one 2- hour examination written in November counts 60%. Subminima: 45% for practicals, 45% on weighted average of theory tests and examination. 

CSC1011H COMPUTER SCIENCE 1011

NOTE: 1) This course follows on from CSC1010H and also places an emphasis on the strengthening of foundational concepts and skills, the carefully-paced introduction of new material, and the development of sound approaches to effective learning. 2) CSC1011H is equivalent to CSC1016S in level, credit value towards the degree and as prerequisite for certain other courses. 18 NQF credits at NQF level 5
Convener: G Stewart
Course entry requirements: CSC1010H
Course outline: The first half of the course aims to further develop problem solving and programming in Python. The second half focuses on object-oriented design and programming in Java, covering objectoriented design techniques and UML diagrams, as well as elementary data structures such as lists, stacks and queues, as well as introducing important considerations relating to Human Computer Interaction and interface design. The practical component includes use of inheritance, polymorphism, interfaces, generics and GUI programming in Java.
Lecture times: Monday - Thursday, 4th period, Tutorials: One per week, replacing one lecture, Practicals: One per week, Monday, 14h00 - 16h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Theory tests count 25%; practical tests and practical assignments count 25%; one 2- hour examination written in November counts 50%. Subminima: 45% for practicals, 45% on weighted average of theory tests and examination.

CSC1015F/S COMPUTER SCIENCE 1015

18 NQF credits at NQF level 5
Convener: A Safla and K Prag
Course entry requirements: At least 70% for NSC Mathematics. Students registered for this course will be assessed in week 5; if it is judged that they are not coping with the level and pace of the course, and would benefit from an opportunity to strengthen foundational concepts and learn new material at a slower pace, they will be required to transfer to CSC1010H from week 7.
Course outline: This course is an introduction to problem solving, algorithm development and programming in the Python language. It includes fundamental programming constructs and abstractions, sorting and searching techniques, and machine representations of data. The practical component covers input/output, conditionals, loops, strings, functions, arrays, lists, dictionaries, recursion, text files and exceptions in Python. Students are taught testing and debugging, as well as sorting and searching algorithms, algorithm complexity and equivalence classes. Number systems, binary arithmetic, Boolean algebra and logic gates are also introduced. The course is offered in a blendedlearning format: students are provided with a set of online video lectures and contact time is in a tutorial/practical format aimed at reinforcing the principles introduced in the online lectures and giving students time to do exercises under the supervision of tutors.
Lecture times: 4th or 5th period once per week, Tutorials: One per week, replacing one lecture, Practicals: One per week, Monday, Tuesday, Wednesday or Thursday 14h00 - 16h00 or 16h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Theory tests 15%; practical tests and practical assignments 25%; June examination 2 hours 60%. Subminima: 45% for practicals, 45% on weighted average of theory tests and examination.

CSC1016S COMPUTER SCIENCE 1016

18 NQF credits at NQF level 5
Convener: A Safla
Course entry requirements: CSC1015F (At least 45% for CSC1015F or at least 70% for CSC1017F)
Course outline: This course builds on the foundation of CSC1015F/CSC1010H, with a focus on object-oriented design and programming in Java, as well as introducing important considerations relating to Human Computer Interaction and interface design. The Java component of the course covers object-oriented design techniques and UML diagrams, as well as elementary data structures such as lists, stacks and queues. The practical component includes use of inheritance, polymorphism, interfaces, generics and GUI programming in Java.
Lecture times: 4th or 5th period daily, Tutorials: One per week, replacing one lecture, Practicals: One per week, Monday, Tuesday or Wednesday, 14h00 - 16h00 or 16h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Theory tests count 15%; practical tests and practical assignments count 25%; one 2- hour exam written in November counts 60%. Subminima: 45% for practicals and 45% on weighted average of theory tests and examination.


Full information on second-year courses

CSC2001F COMPUTER SCIENCE 2001

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required.
24 NQF credits at NQF level 6
Convener: F Meyer Course entry requirements: (CSC1015F and CSC1016S) or (CSC1010H and CSC1011H)
Course outline: This course builds on the first year Computer Science foundation with an emphasis on data storage and manipulation. The course covers abstract data types and assertions, recursive algorithms, tree structures such as AVL and B-trees, graph traversals, minimum spanning trees, sets, hashing and priority queues. An introduction to conceptual modelling, database design and relational database manipulation is included. Practical programming in Java in a Unix environment is an important part of the course
Lecture times: Monday - Friday, 2nd period, Four or five lectures per week, Practicals: One 4-hour practical per week, Monday - Friday, 14h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 20%; practicals and practical test 30%; exam 50%. Subminima: 45% on weighted average of theory tests and examination.

CSC2002S COMPUTER SCIENCE 2002

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required.
24 NQF credits at NQF level 6
Convener: Associate Professor S Berman
Course entry requirements: CSC2001F (At least 45% for CSC2001F)
Course outline: The aim of this course is to build on the foundational concepts covered in CSC2001F, with further necessary core topics of an undergraduate Computer Science curriculum. These topics comprise: concurrent and parallel computing (including practical work in Java); computer architecture; an introduction to Society, Ethics, and the Profession (covering ethical issues such as property rights, freedom of expression and privacy, free and open source software); and Theory of Computing (including Turing Machines and the limits of computation).
Lecture times: Monday - Friday, 2nd period, Four lectures per week, Practicals: One 4-hour practical per week, Monday - Friday, 14h00 - 18h00 102
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 20%; practicals and practical test 30%; exam 50%. Subminima: 45% on weighted average of theory tests and examination.

CSC2004Z PROGRAMMING ASSESSMENT

This is a required course for all students majoring in Computer Science and/or who wish to continue to any third year courses in Computer Science. It should be taken in the second year of study and will demonstrate competency in programming, which is assumed in all third year courses. It is a compulsory course in the Computer Science major CSC05.
0 NQF credits at NQF level 6
Convener: Associate Professor S Berman Course entry requirements: (CSC1015F and CSC1016S) or (CSC1010H and CSC1011H)
Course outline: All students who take advanced courses in Computer Science need to build on a foundation of strong programming skills. The aim of this course is to assess and confirm mastery in fundamental programming skills before students can proceed to advanced courses.
Lecture times: None
DP requirements: None
Assessment: Practical programming examination counts for 100%

CSC2005F/S INDEPENDENT RESEARCH IN COMPUTER SCIENCE

24 NQF credits at NQF level 7
Convener: Dr J Chavula
Course entry requirements: Academically strong students may apply for entrance. Selection will be made on the basis of final results in CSC1015F, CSC1016S and CSC2001F. The number of places will be limited depending on the availability of supervisors, and the final decision will be at the discretion of the Head of Department.
Course outline: This course allows students to pursue a course of independent research in one of the areas of specialisation of the department, as listed on the department's website, under the direct supervision of one of the staff members. Students will learn research methods in Computer Science and apply these in a suitable project. They will also learn about research writing (proposal and report). Students will complete a research project and document this in a research report (mini-dissertation). An intermediate deliverable will be a project proposal and presentation to staff. Lecture times: Regular meetings with supervisor, by arrangement
Assessment: Proposal 20%, Final research report 80%

CSC2041F INTRODUCTION TO AI 1: KNOWLEDGE REPRESENTATION

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required. 24 NQF credits at NQF level 6

Convener: Dr Z Mahlaza
Course entry requirements: CSC1015F/S, CSC1016S, MAM1031F, MAM1032S, (MAM1019H or STA1000X or MAM1008S)
Course outline: The course introduces the field of Artificial Intelligence and then covers the fundamentals of knowledge representation and reasoning as a paradigm for Artificial Intelligence. It includes relevant topics such as logical agents and the creation of symbolic and logical representations from problem statements. Inference in propositional and first-order logic are used to build upon the fundamentals of computational logic and automated reasoning. An overview of core algorithms for knowledge representation (e.g., tableau, case-based, constraints, SAT solving) is given. Approaches to handling uncertainty in knowledge representation and reasoning are introduced through random variables, probabilistic inference, and the framework of utility functions for decision making.
Lecture times: Monday - Friday, 3rd period, Four lectures per week, Practicals: One 4-hour practical per week, Monday - Friday, 14h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 25%; practicals and practical test 25%; examination 50%. Subminima: 45% on weighted average of theory tests and examination.

CSC2042S INTRODUCTION TO AI 2: MACHINE LEARNING

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required.

24 NQF credits at NQF level 6
Convener: Dr J Buys
Course entry requirements: CSC1015F/S, CSC1016S, MAM1031F or MAM1004F
Course outline: Machine learning is introduced as a paradigm for Artificial Intelligence. Fundamental machine learning algorithms are introduced, and students implement a subset of those using the Python programming language and modern machine learning frameworks in Python. There is a focus on problem formulation, feature representations and evaluation.
Lecture times: Monday - Friday, 3rd period, Four lectures per week, Practicals: One 4-hour practical per week, Monday - Friday, 14h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work. Assessment: Tests 25%; practicals and practical test 25%; examination 50%. Subminima: 45% on weighted average of theory tests and examination.


Full information on third-year courses

CSC3002F COMPUTER SCIENCE 3002

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required.

36 NQF credits at NQF level 7
Convener: Associate Professor P Marais
Course entry requirements: CSC2001F, CSC2002S, CSC2004Z and ((MAM1004F+MAM1008S) or (MAM1000W) or (MAM1031F or equivalent)).
Course outline: The course provides an introduction to the structure and organization of operating systems, and computer networks including various logical layers of the ISO OSI layers, focusing on the Internet Protocol suite.
Lecture times: Monday - Friday, 2nd period, Practicals: Two 4-hour practicals per week, Monday - Friday, 14h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests count 15%; practical work counts 35%; one 3-hour paper written in June counts 50%. Subminima: 45% for practicals; 45% on weighted average of theory tests and examinations.

CSC3003S COMPUTER SCIENCE 3003

Each student registered for this course is required to have a laptop for use during class sessions as well as after hours. The minimum specifications of the laptop are available at https://internal.cs.uct.ac.za/teaching/laptop_requirement.html (a tablet will not be suitable). The course convenor will provide details of additional software (open source) required.

36 NQF credits at NQF level 7
Convener: Associate Professor P Marais
Course entry requirements: CSC2001F, CSC2002S, CSC2004Z and ((MAM1004F+MAM1008S) or (MAM1000W) or (MAM1031F or equivalent)). Course outline: This is a course on two advanced topics: (1) advanced software design is about turning requirements into effective and efficient implementations in a systematic manner; and (2) the algorithms module expands on a topic central to computing. This module describes how algorithms are categorised, and shows interesting algorithms in each category and analyses their complexity. It also touches on Turing machines and the limits of computation.
Lecture times: Monday - Friday, 2nd period, Practicals: Two 4-hour practicals per week, Monday - Friday, 14h00 - 18h00
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests count 15%; practical work counts 35%; one 3-hour paper written in November counts 50%. Subminima: 45% for practicals, 45% on weighted average of theory tests and 35% for the algorithms module (comprising Theory of Algorithms and Theory of Computation) in the final examination.

CSC3041F AI: AUTOMATED PLANNING AND CONTROL

This course will only be offered from 2026.

18 NQF credits at NQF level 7
Convener: To be advised Course entry requirements: (CSC2041F or CSC2042S), CSC2001F
Course outline: This course provides an introduction to problem solving by searching: uninformed search, heuristic search, and adversarial search for games are covered. Introduction to reinforcement learning: Markov Decision Processes for sequential decision making, passive and active reinforcement learning, policy search and data-driven control techniques. The course also covers applications in game playing, planning in interactive environments, and robot navigation and control.
Lecture times: Monday – Friday, 3rd period, Practicals: One 4-hour practical per week, by arrangement
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 25%; practical work 25%; examinations 50%. Subminima: 45% for practicals, 45% weighted average of theory tests and examinations.

CSC3042F AI: DEEP LEARNING

This course will only be offered from 2026.

18 NQF credits at NQF level 7
Convener: To be advised
Course entry requirements: CSC2001F, CSC2042S
Course outline: The course builds on fundamental concepts in machine learning to introduce modern practical deep neural networks. Different neural network architectures are covered, including deep feedforward networks, convolutional and recurrent neural networks, and Transformers. There is a focus on the design and implementation of scalable deep learning systems. A selection of applications from Natural Language Processing and Computer Vision are included. Finally, ethics for machine learning is introduced through a number of case studies, covering issues such as dataset and algorithmic bias.
Lecture times: Monday – Friday, 3rd period, Practicals: One 4-hour practical per week, by arrangement DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 25%; practical work 25%; examinations 50%. Subminima: 45% for practicals, 45% weighted average of theory tests and examinations.

CSC3043S AI: REASONING IN AI

This course will only be offered from 2026.

18 NQF credits at NQF level 7
Convener: To be advised
Course entry requirements: CSC2041F, CSC2042S, CSC2001F
Course outline: This course covers a selection of advanced topics in reasoning in Artificial Intelligence such as: reasoning through language with Large Language Models; visual reasoning with diffusion models; probabilistic reasoning with Bayesian networks; logic programming; and expert systems. Lecture times: Monday – Friday, 3rd period, Practicals: One 4-hour practical per week, by arrangement
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 25%; practical work 25%; examinations 50%. Subminima: 45% for practicals, 45% weighted average of theory tests and examinations.

CSC3044S AI: AI SYSTEMS

This course will only be offered from 2026.

18 NQF credits at NQF level 7
Convener: To be advised
Course entry requirements: CSC2001F, CSC2041F, CSC2042S, (CSC3041F or CSC3042F)
Course outline: This course provides an overview of agent architectures: cognitive architectures; software agents such as collaborative and information-gathering agents; as well as human-agent interaction and societal impacts of AI systems. Students will apply these concepts through a practical AI system development capstone project.
Lecture times: Monday – Friday, 3rd period, Practicals: One 4-hour practical per week, by arrangement
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests 25%; practical work 25%; examinations 50%. Subminima: 45% for practicals, 45% weighted average of theory tests and examinations.