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.
- CSC1010H Computer Science 1010
- CSC1011H Computer Science 1011
- CSC1015F Computer Science 1015
- CSC1016S Computer Science 1016
- CSC1019F Foundations of Computer Programming for Engineers
Second-year courses
- CSC2001F Computer Science 2001
- CSC2002S Computer Science 2002
- CSC2004Z Programming Assessment
- CSC2005Z Independent Research in Computer Science
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 carefully-paced 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 HEQSF 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 3-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 HEQSF 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, as well as introducing important considerations relating to ethical and professional issues. The latter introduces students to ethical issues such as property rights, freedom of expression and privacy, and concepts such as free and open source software, ICT for Development, and Professional Codes of Conduct. The Java component of the course covers object-oriented design techniques and UML class 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: 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 3-hour examination written in November counts 50%. Subminima: 45% for practicals, 45% on weighted average of theory tests and examination.
CSC1015F: Computer Science 1015
18 NQF credits at HEQSF level 5
Convener: A Safla
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.
Lecture times: 4th or 5th period daily, 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 HEQSF 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 ethical and professional issues. The latter introduces students to ethical issues such as property rights, freedom of expression and privacy, and concepts such as free and open source software, ICT for Development, and Professional Codes of Conduct. The Java component of the course covers object-oriented design techniques and UML class 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.
CSC1019F: Foundations of Computer Programming for Engineers
12 NQF credits at HEQSF level 5
Convener: Dr G Nitschke
Course outline:
This course offers an introduction to the development of algorithms and design of computer programs and provides an introduction to programming and algorithms, using the Python programming language. Topics include: basic syntax, variables, operators, comments, expressions, strings, input and output; conditional statements, if, nested ifs, if-else ladders, Boolean expressions; loops, for and while, nested loops; functions, parameters, return values; testing and debugging; arrays and lists, multidimensional arrays; sorting and searching; text files; and number systems.
DP requirements: 45% weighted average for practical work.
Assessment: Theory tests count for 20%, practicals count for 20%, practical tests count for 10%, June examination counts for 50% of the course mark. Subminima: 45% weighted average for practical work, 45% weighted average of tests and exams.
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 www.cs.uct.ac.za/teaching. (A tablet or “netbook” will not be suitable). The course convenor will provide details of additional software (open source) required.
24 NQF credits at HEQSF level 6
Convener: Associate Professor S Berman
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 count for 16.7%; practicals count 33.3%; one 3-hour paper written in June counts 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 HEQSF 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%
CSC2005Z: Independent Research in Computer Science
24 NQF credits at HEQSF level 7
Convener: Professor J Gain
Course entry requirements: Academically strong students may apply for entrance. Selection will be made on the basis of marks for 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: Meetings with supervisor, by arrangement
Assessment: Proposal 20%, Final research report 80%
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 www.cs.uct.ac.za/teaching. (A tablet or “netbook” will not be suitable). The course convenor will provide details of additional software (open source) required.
24 NQF credits at HEQSF level 6
Convener: To be advised
Course entry requirements: CSC2001F (or supplementary exam for CSC2001F)
Course outline:
The goal of this course is to complete the basic education of a Computer Scientist. Mobile application development and interface design, an introduction to computer architecture and concurrent programming. Practical work in Java and in assembler programming are included.
Lecture times: Monday - Friday, 2nd 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 count for 16.7%; practicals and practical test count 33.3%; one 3-hour paper written in November counts 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 www.cs.uct.ac.za/teaching. (A tablet or “netbook” will not be suitable). The course convenor will provide details of additional software (open source) required.
36 NQF credits at HEQSF level 7
Convener: Associate Professor P Marais
Course entry requirements: CSC2001F, CSC2002S and ((MAM1004F+MAM1008S) or MAM1000W). CSC2004Z is required if CSC2002S was passed after 2017.
Course outline:
The course provides an introduction to the two topics (1) structure and organization of operating systems and (2) a basic knowledge of computer networks that will take the student through the 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 www.cs.uct.ac.za/teaching. (A tablet or “netbook” will not be suitable). The course convenor will provide details of additional software (open source) required.
36 NQF credits at HEQSF level 7
Convener: Associate Professor P Marais
Course entry requirements: CSC2001F, CSC2002S and ((MAM1004F+MAM1008S) or MAM1000W), and either INF2009F or permission from the Head of Department to do compensation work to a satisfactory standard. CSC2004Z is required if CSC2002S was passed after 2017.
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.
CSC3022F: C++ and machine learning
36 NQF credits at HEQSF level 7
Convener: Zola Mahlaza
Course entry requirements: CSC2001F, CSC2002S and ((MAM1004F+MAM1008S) or MAM1000W). CSC2004Z is required if CSC2002S was passed after 2017.
Course outline:
This course introduces the C++ programming language, followed by an exploration of topics in machine learning. Students are exposed to different aspects of C++ including templates and functional programming and an in-depth study of the C++ memory model. A number of machine learning algorithms are introduced and students implement a subset of these in C++. By the end of the course, students should understand how to write efficient object-oriented programs in C++, be familiar with major categories of learning algorithms, and be able to select and implement the most appropriate algorithm for a given problem.
Lecture times: Monday – Friday, 3rd period, Practicals: Two 4-hour practicals per week, by arrangement
DP requirements: Minimum of 45% aggregate in practical work.
Assessment: Tests count 16.7%; practical work counts 33.3%; examinations count 50%. Subminima: 45% for practicals, 45% weighted average of theory tests and examinations.