Bachelor of Science in Computer Science
Teaching methods and assessment
We use a blend of lecture-led learning and Technology Enhanced Learning (TEL).
Our teaching staff is a mix of full-time academics and working professionals to ensure you benefit from quality academic and industry-specific inputs.You are issued with a tablet for learning and research.
You have access to campus resource centres, information technology and programming labs and WiFi.
You attend lectures, group sessions, workshops and guest presentations.
You have to complete practical assignments and conduct individual and group research projects. You have to demonstrate theoretical and practical understanding via examinations, presentations, simulations and case studies.
As a third-year student, you will complete a group project where you develop a website, application and database for an NGO, NPO or community organisation.
Students are introduced to the basic principles of computer science.
Advanced Information and Computer Skills
Computer Science 1A
Computer Science 1B
Generic Algorithm Design
Information Systems 1A
Information Systems 1B
Software Development 1A
Software Development 1B
Year 1 module descriptions
Business English (SSBE111)
Business communication skills are essential to every successful business enterprise. The main focus of the module falls on the practical abilities that students will be able to utilise in the business environment.
Computer Science 1A (ITCS111)
To be a professional today in any field relating to computers one should not regard the computer as just a black box that executes programs by magic. All students should acquire some understanding and appreciation of a computer system’s functional components, their characteristics, their performance and their interactions. Students need to understand computer architecture to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should be able to understand the trade-off among various components, such as CPU clock speed vs. memory size. After completion, the student will be able to demonstrate an understanding of the different components of the computer and demonstrate an understanding of the circuitry involved with computers.
Generic Algorithm Design (ITGA111)
This module is aimed at providing students with a better understanding of the detailed design and implementation of algorithms as programs. It includes the fundamentals of simple data structures, parameters, control structures, arrays, records, functions, object-oriented program design, and file concepts.
Information Systems 1A (ITIS111)
This module presents the student with the role of information, Information Technology (IT) and Information Systems (IS) in today's business world. It also introduces systems and development concepts, IT, and application software. It explains how information is used in organisations and how IT enables improvement in quality, timeliness, and competitive advantage. Structures and functions of computers and telecommunications systems are examined, and the purpose and organisation of standard systems are introduced. The importance of information for stating and attaining organisational goals is recognised as the basis for exploring the development of databases to store information. Information systems are presented as a method of processing and communicating information.
Mathematics 1A (ITMT111)
Calculus is the mathematics of growth and change. Wherever there is motion or growth, or where forces are at work producing acceleration, calculus is the right mathematical tool. Differential calculus is the study of how quantities change and is largely concerned with the rate at which they change. Modern science and engineering use calculus as a language for expressing physical laws in precise mathematical terms and as a tool for studying the consequences of these laws. Students will be introduced to these concepts in this module.
Software Development 1A (ITSD112)
This module is designed to provide students with a better understanding of the detailed design and implementation of algorithms as programs. It includes the fundamentals of simple data structures, parameters, control structures, and functions in C++.
Computer Skills (ITSK110)
This module is designed to enable the student to use the personal computer and peripherals functionally and to apply selected application programs, on an introductory level, independently and with confidence.
Computer Science 1B (ITCS121)
All students should acquire some understanding and appreciation of a computer system’s functional components, their characteristics, their performance and their interactions. Students need to understand computer architecture to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should be able to understand the trade-off among various components, such as CPU clock speed vs memory size.
Discrete Mathematics (ITDM121)
Discrete mathematics is the mathematics that deals with discrete objects. The aim of this course is not to cover “discrete mathematics” in depth. Rather we will discuss a number of selected results and methods, mostly from the area of combinatrics, graph theory, and combinatorial geometry, with a little elementary number theory.
Advanced Information and Computer Skills (ITAS110)
This module is designed to assist students to become information technology literate. To be able to identify, locate, evaluate, and effectively use information. students will learn how to apply MS Word and MS Excel, on an advanced level, independently and with confidence.
Information Systems 1B (ITHC121)
Human-Computer Interaction is becoming ever more important as a means of achieving competitive IT product designs. With the growing field of employment for IT graduates and others, HCI helps to focus on how best to design interactive systems that are productive and pleasurable to use.
Mathematics 1B (ITMT121)
Calculus is the mathematics of growth and change. Wherever there is motion or growth, or where forces are at work producing acceleration, calculus is the right mathematical tool. Integral calculus is the study of how quantities accumulate. Modern science and engineering use calculus as a language for expressing physical laws in precise mathematical terms and as a tool for studying the consequences of these laws. Students will be introduced to these concepts in this module.
Software Development 1B (ITSD122)
A programming language can be seen as a programmer’s principal interface with the computer. Programming in C++ will give the student the ability to program in an Object-orientated programming environment. Students will be introduced to the fundamental components in C++, coding, debugging and error handling. They will be taught how to use and design user-friendly programs and how to work with data structures, variables, arrays, records, stacks, pointers and classes. They will learn how to create programs using sequential processing, selection and repetition control structures. The course will also demonstrate to students how to use conditional execution, and nested and multiple conditions.
Students develop an intermediate level of knowledge and skills in computer science.
Computer Science 2A
Computer Science 2B
Information Systems 2A
Information Systems 2B
Software Development 2A
Software Development 2B
Human Resource Management 1 or Introduction to Financial Accounting
Year 2 module description
Computer Science 2A (ITCS211)
This course will help Information Technology students understand the workings of the hardware they are using. In all probability they will never use the programming part of this course as it is in the industry, but they might use it with other languages to make an application faster. If students end up in the hardware programming industry, for example cellular phones and digital devices, they might be using assembler.
Databases 2A (ITDB211)
After students have completed Databases 2A, they should have a good grounding in the concepts of data and database management systems. Some of the topics in this module include: fundamentals of database design, namely entity modelling as well as object orientated modelling; normalisation; transactional processing; data distribution; data administration; physical database design; and data warehousing. On the practical side, project teams will develop a physical database from its logical design. Information system design and implementation within the database management system environment will be used to create the logical design.
Information Systems 2A (ITIS211)
This course is similar to the balanced coverage of analysis and design in the traditional course, except that object-oriented models and techniques are emphasised. Object-oriented analysis and object-oriented design, with database design, input/output/controls design and dialog (interface) design, are covered. It is usually assumed the projects will use custom development. The course calls attention to the SDLC, project management, information gathering, and management reporting.
Software Development 2A (ITSD212)
This module covers the concepts of object-oriented programming to students familiar with the fundamental concepts of procedural programming. It uses C++ as the programming language. It focuses on the definition and use of classes, along with the fundamentals of object-oriented design. It also introduces software engineering issues.
Human Resource Management 1 (COHR111)
This course explores the employee as an individual and the differences between employees from a psychological perspective. An introduction to current Human Resources in South Africa in terms of practices and general functions is also presented.
Introduction to Financial Accounting (COIF111)
The module introduces the student to the concepts, principles and procedures of accounting. It covers the recording of accounting entries in the subsidiary journals; posting to the general ledger; compiling a post-adjustment trial balance; the financial statements of a sole trader; the accounting procedures needed for reconciliation of the bank account; and debtors’ and creditors’ control.
Computer Science 2B (ITCS221)
Recent advances in computer and telecommunications networking, particularly those based on TCP/IP, have increased the importance of networking technologies in the computing discipline. Networking covers a range of topics related to computer communication, network concepts and protocols, security, wireless, cloud computing and mobile computing, to mention a few. Students will examine all of these components.
Databases 2B (ITDB221)
In this module students will learn how to design, create and maintain an Oracle database. Emphasis will also be placed on the conceptual understanding of the Oracle Database architecture and how its components work and interact with one another. The module also includes teaching students how to create an operational database and properly manage the various structures in an effective and efficient manner. This component of the module will cover aspects relating to the creation of database structures, storing, retrieving, and manipulating of data in a relational or object orientated database using structured query language (SQL).
Information Systems 2B (ITIS221)
IT projects are famous for cost overruns, time overruns and failure of the applications to provide expected features. Many projects are cancelled before they ever get completed and a great many of them fail. Therefore, it is important that projects are managed correctly. Many people involved in the implementation of projects have little understanding of the principles, processes, tools and techniques of project management. The importance of project management as a discipline is growing rapidly and every aspiring IT manager today will need to have an understanding of how to effectively manage an IT project. This course covers the aspects necessary for successful management of information systems development or enhancement projects.
Software Development 2B (ITSD222)
This course builds on the foundation provided by ITSD212 to introduce the fundamental concepts of data structures and the algorithms that proceed from them. Topics include recursion, data structures (stacks, queues, linked lists, trees and graphs) and the basics of algorithmic analysis.
Students develop a more advanced level of knowledge and skills in computer science, software development and information systems.
Computer Science 3A
Computer Science 3B
Information Systems 3A
Information Systems 3B
Software Development 3A
Software Development 3B
Year 3 module description
Computer Science 3A (ITCS311)
An operating system defines an abstraction of hardware behaviour with which programmers can control the hardware and manage resource sharing. It is necessary to ensure that students understand the extent of the use of an operating system prior to the detailed study of internal implementation algorithms and data structures. The topics covered therefore address both the use of an operating system as well as its design and implementation. Internal design has relevance in such diverse areas as dependable programming, algorithm design, algorithm implementation, modern device development, building secure and safe systems, managing networks, and many others.
Information Systems 3A (ITIS311)
Since the systems development world is slowly changing from a process-oriented way of modelling to that of an object-oriented modelling, students should be equipped to develop systems in an object-oriented way. Therefore, this module involves the use of the Object Management Group’s Unified Modelling Language (UML) for modelling. As the strategic value of software increases for many companies, the industry looks for techniques to automate the production of software and to improve quality and reduce cost and time-to-market. These techniques include component technology, visual programming, patterns and frameworks. Businesses also seek techniques to manage the complexity of systems as they increase in scope and scale. In particular, they recognise the need to solve recurring architectural problems, such as physical distribution, concurrency, replication, security, load balancing and fault tolerance. Additionally, the development for the World Wide Web, while making some things simpler, has exacerbated these architectural problems. The Unified Modelling Language (UML) was designed to respond to these needs. Many of the procedures and techniques students have come across in their second year analysis and design differ. This will all be examined in this module.
Software Development 3A (ITSD301)
The programming language used in this module is Java. It covers event-driven programming and Graphical User Interfaces. This course also attempts to highlight the common principles of distributed systems that are based on the object-oriented paradigm and to distinguish the different perspectives that client programmers, server programmers and system administrators have on these objects.
Software Development 3B (ITSD303)
This module involves the development of an Information System that will benefit the business operations of a non-profit organisation. Its purpose is to support students in gaining practical skills (soft skills) and to hone the core skills (technical skills) that they have acquired during their studies. The project is a team effort, where all members can get first-hand experience by way of applying what they have learned and adding value to a real-life organisation. Students will also gain valuable knowledge in terms of group dynamics and business communication.
Computer Science 3B (ITCS321)
Although technical issues are obviously central to any computing curriculum, they do not by themselves constitute a complete educational program in the field. Students must also develop an understanding of the social and professional context in which computing is done. This course prepares students to take managerial or technical decisions concerning security of information. It also introduces strategies for dealing with situations involving security risk or threat.
Information Systems 3B (ITIS320)
Information Technology (IT) and Information Systems (IS) are disciplines that can be applied to a wide variety of fields in industry. Most big organisations make use of IT and IS. It is important for final year students to be equipped with information regarding the industries they can enter after completing their studies. The objective of this module is to enrich the students' knowledge base. Guest lecturers from the industry are invited to present topics related to their field of expertise, thereby exposing the students to the different fields in the IT industry. By means of this practice, students get the opportunity to gain an understanding of the possible jobs, roles and responsibilities that they can pursue as a career. In this regard, students are also expected to write a short research document about one of the relevant fields in IT and IS.