Undergraduate Courses
CSC1010H Computer Science 1010 (Extended Degree Programme)
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.
Convenor: Gary Stewart
Teaching Assistant: TBA
CSC1011H Computer Science 1011 (Extended Degree Programme)
Course entry requirements: CSC1010H, MAM1005H
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.
Convenor: Gary Stewart
Teaching Assistant: TBAAdvertisement
CSC1015F Computer Science 1015
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.
Convenor: Maria Keet
Teaching Assistant: TBA
CSC1016S Computer Science 1016
Course entry requirements: CSC1015F (or supp for CSC1015F)
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 objectoriented 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.
Convenor: Maria Keet
Teaching Assistant: TBA
CSC1017F Programming for Engineers
Not offered in 2016. All students should take CSC1015F.
CSC2001F Computer Science 2001
Course entry requirements: CSC1015F and CSC1016S or CSC1010H and CSC1011H, MAM1000W or equivalent.
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.
Convenor: Patrick Marais
Teaching Assistant: TBA
CSC2002S Computer Science 2002
Course entry requirements: CSC2001F (or supp for CSC2001F), MAM1000W or equivalent.
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.
Convenor: Patrick Marais
Teaching Assistant: TBAAdvertisement
CSC2003S Computer Games
Course entry requirements: CSC2001F, MAM1000W or equivalent.
Course outline: This course introduces high-level game programming concepts and practical game construction. By the end of the course, students will be able to design and implement simple 2D games. The course begins with a basic introduction to games and game genres for students unfamiliar with gaming, before exploring the game development process. Appropriate terminology, methods, and tools for computer game development are introduced. Fundamental algorithms for 2D game development and implementation are covered, including pathfinding algorithms suited to tile-based games. Text-based games are also briefly explored using Inform7. This is a practical course where students design and implement a game using LibGDX, a Java-based game engine. The final deliverable is a fully functional 2D game which implements many of the techniques explored in lectures.
Convenor: Geoff Nitschke
Teaching Assistant: TBA
More information: 2014 Games Brochure
CSC2005Z Independent Research in Computer Science
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.
Convenor: Hussein Suleman
CSC3002F Computer Science 3002
Course entry requirements: CSC2001F and CSC2002S.
Course outline: The course provides an introduction to the three topics (1) structure and organization of operating systems; (2) introduction to functional languages and their basis in the λ-calculus. The approach has new relevance with the rise of multiple processors in computing; (3) a basic knowledge of computer networks. The course will take the student through the various logical layers of the Internet protocol suite.
Convenor: Tommie Meyer
Teaching Assistant: TBA
CSC3003S Computer Science 3003
Course entry requirements: CSC2001F and CSC2002S, and either INF2009F or permission from the Head of Department to do compensation work to a satisfactory standard.
Course outline: This a course on three advanced topics (1) advanced software design is about turning requirements into effective and efficient implementations in a systematic manner; (2) the compilers module is aimed at exposing students to the theory and practice of parsing and translating high level programming languages into executable code; (3) 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.
Convenor: Tommie Meyer
Teaching Assistant: TBA
CSC3020H Three Dimensional and Distributed Games Design
Course entry requirements: CSC2001F, CSC2002S and CSC2003S.
Course outline: This course covers design and development of simple 3D and networked games. The course describes the game development processes and introduces key terminology, methods, and tools of computer gaming. It includes Game Design, 3D Computer Graphics and software agents that can adapt to uncertain and constantly changing gaming environments, as well as techniques for multiuser and distributed games. This is a practical course: students collaborate with designers and artists to produce a full 3D multi-play game which builds on concepts covered in lectures.
Convenor: Geoff Nitschke
Teaching Assistant: TBA
More information: 2014 Games Brochure
CSC3022H C++ With Applications
Course entry requirements: CSC2001F, CSC2002S
Course outline: This course introduces the C++ programming language, followed by a practical exploration of topics in machine learning using C++. Students learn how to use features such as templates and basic concurrency, and a detailed treatment of the C++ memory model is also covered. 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 objection 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.
Convenor: Geoff Nitschke
Teaching Assistant: TBA
GET DETAILS ON UNIVERSITY APPLICATION IN SA