University Of Pretoria SA Coronavirus Website Computer Science Department

First Year

First Semester

COS151 Introduction to Computer Science
THIS WEB PAGE PROVIDES THE STUDY GUIDE for COS151. Please also carefully take note of all further announcements which will appear on this web page.

COS132 Imperative Programming
This module introduces imperative computer programming, which is a fundamental building block of computer science. The process of constructing a program for solving a given problem, of editing it, compiling, running and debugging it, is covered from the beginning. The aim is to master the elements of a programming language, and be able to put them together in order to construct programs using types, control structures, arrays, functions and libraries. After completing this module, the student should understand the fundamental elements of a program, the importance of good program design and user friendly interaction mechanisms. Students should be able to write complete elementary programs.

Second Semester

COS110 Program Design: Introduction
The focus is on object-oriented (OO) programming. Concepts including inheritance and multiple inheritance, polymorphism, operator overloading, memory management (static and dynamic binding), interfaces, encapsulation, re-use, etc. will be covered in the module. The module teaches sound program design with the emphasis on modular code, leading to well structured, robust and documented programs. A modern OO programming language is used as the vehicle to develop these skills. The module will introduce the student to basic data structures, lists, stacks and queues.

COS122 Operating Systems
Fundamental concepts of modern operating systems in terms of their structure and the mechanisms they use are studied in this module. Real Time, Multimedia and Multiple Processor Systems are defined and analysed. This module also deals with modern design issues of process management, deadlock, memory management, input/output management, file systems and security.

COS121 Software Modelling (C++)
The module will introduce the concepts of model-driven analysis and design as a mechanism to develop and evaluate complex software systems. Systems will be decomposed into known entities, such as design patterns, classes, relationships, execution loops and process flow, in order to model the semantic aspects of the system in terms of structure and behaviour. An appropriate tool will be used to support the software modelling. The role of the software model in the enterprise will be highlighted. Students who successfully complete this module will be able to conceptualise and analyse problems and abstract a solution.

Anti Semester

Year Long

ACM101 ACM ICPC Training Module
This module is the official page for the Coders Guild. Sessions include training for the ACM International Collegiate Programming Contest, other related contests, as well as other fun programming related activities.

COS101 COS101
This module is a companion for the COS132 module. It is not for credits. It is an open online module which presents the material for the credited COS132 module presented at the Computer Science Department during the first semester every year It introduces imperative computer programming, which is a fundamental building block of computer science. The process of constructing a program for solving a given problem, of editing it, compiling, running and debugging it, is covered from the beginning. The aim is to master the elements of a programming language, and be able to put them together in order to construct programs using types, control structures, arrays, functions and libraries. After completing this module, the student should understand the fundamental elements of a program, the importance of good program design and user friendly interaction mechanisms. Students should be able to write complete elementary programs.

COS000 Orientation and Registration
This module has been created to aid the with orientation and registration process for first year students as well as the registration process for 2nd and 3rd year students in 2017. Degree detail, not available in the online yearbooks, will be posted here. Subject forms and other details will also be made available here.

Second Year

First Semester

COS212 Data Structures and Algorithms
Data abstraction is a fundamental concept in the design and implementation of correct and efficient software. In prior modules, students are introduced to the basic data structures of lists, stacks and queues. This module continues with advanced data structures such as trees, hash tables, heaps and graphs, and goes into depth with the algorithms needed to manipulate them efficiently. Classical algorithms for sorting, searching, traversing, packing and game playing are included, with an emphasis on comparative implementations and efficiency. At the end of this module, students will be able to identify and recognise all the classical data structures; implement them in different ways; know how to measure the efficiency of implementations and algorithms; and have further developed their programming skills, especially with recursion and polymorphism.

COS216 Netcentric Computer Systems
This module introduces the principles of netcentric computing that can be applied to the WWW and internet as well as to distributed applications. The main focus is on the concepts of client and server side programming, web-based applications, port and socket interaction, writing programs that require remote function calls, and achieving database connectivity using the appropriate technology. The supporting technologies of mark-up languages and scripting languages are also studied. It will also test the ability of a student to use, integrate and maintain the necessary software and hardware required to illustrate the concepts specified.

COS210 Theoretical Computer Science
This module provides the foundation of theoretical computer science for investigating both com- putability and complexity of problems. Topics include, but are not limited to: nite Automata, regular languages, context-free languages, Turing Machines and the Church-Turing Thesis, P vs NP problem, NP-complete class, the Halting problem etc. While the module is heavily focused on theory, as the name would imply, it provides a very practical basis for the type of logical reasoning a computer scientist should pride themselves in.

COS221 Introduction to Database Systems
This module will expose students to the evolution of databases systems. They will be able to model data conceptually, in terms of models such as conceptual, relational, object oriented, graph-based and network and the mapping between models, in particular between the conceptual and relational model. Foundational concepts relating to the relational model will be considered, such as: entity and referential integrity, relational algebra and calculus, functional dependency, normals forms, Indexing of database systems and transaction processing will also form an integral part of the curriculum. The physical data representation of the databases system both in memory and within the file system of the operating system will be considered.

Second Semester

COS226 Concurrent Systems
Computer science courses mostly deal with sequential programs. This module looks at the fundamentals of concurrency; what it means, how it can be exploited, and what facilities are available to determine program correctness. Concurrent systems are designed, analysed and implemented.

COS284 Computer Organisation and Architecture
This module provides the foundations on which other modules build by enabling a deeper understanding of how software interacts with hardware. It will teach the design and operation of modern digital computers by studying each of the components that make up a digital computer and the interaction between these components. Specific areas of interest, but not limited to, are: representation of data on the machine-level; organisation of the machine on the assembly level; the architecture and organisation of memory; inter- and intra-component interfacing and communication; data paths and control; and parallelism. Topic-level detail and learning outcomes for each of these areas are given by the first 6 units of ‘Architecture and Organisation’ knowledge area as specified by the ACM/IEEE Computer Science Curriculum 2013. The concepts presented in the theory lectures will be reinforced during the practical sessions by requiring design and implementation of the concepts in simulators and assembly language using an open source operating system.

COS214 Software modelling
The module will introduce the concepts of model-driven analysis and design as a mechanism to develop and evaluate complex software systems. Systems will be decomposed into known entities, such as design patterns, classes, relationships, execution loops and process flow, in order to model the semantic aspects of the system in terms of structure and behaviour. An appropriate tool will be used to support the software modelling. The role of the software model in the enterprise will be highlighted. Students who successfully complete this module will be able to concep-tualise and analyse problems and abstract a solution.

Anti Semester

Year Long

Third Year

First Semester

COS314 Artificial Intelligence
The main objective of this module is to introduce a selection of topics from Artificial Intelligence (AI), and to provide students with the background to implement AI techniques for solving complex problems. This module will cover topics from classical AI, as well as more recent AI paradigms. These topics include: Search methods, game playing, knowledge representation and reasoning, machine learning, neural networks, evolutionary computation, and swarm intelligence. In the practical part of this module, students will get experience in implementing (1) game trees with suitable algorithms, (2) a genetic algorithm and applying it to solve a real-world problem, and (3) a neural network and applying it to solve a real-world problem, as examples.

COS332 Computer Networks
The objective of this module is to acquaint the student with the terminology of communication systems and to establish a thorough understanding of exactly how data is transferred in such communication networks, as well as applications that can be found in such environments. The study material includes: concepts and terminology, the hierarchy of protocols according to the OSI and TCP/IP models, protocols on the data level, physical level and network level as well as higher level protocols. The practical component of the module involves programming TCP/IP sockets using a high level language. The emphasis throughout is on the technical aspects underlying the operation of networks, rather than the application of networks.

COS341 Compiler Construction
THIS WEB PAGE IS THE STUDY GUIDE for COS341: COMPILER CONSTRUCTION. Please carefully take note of all further announcements which will appear on this web page! In COS341 we follow the textbook by Torben Mogensen: 2nd edition (Springer)

COS344 Computer Graphics
The aim of this module is to acquire a sound knowledge of the basic theory of interactive computer graphics and basic computer graphics programming techniques. The theory will cover graphics systems and models, graphics programming, input and interaction, geometric objects and transformations, viewing in 3D, shading and rendering techniques. The module includes a practical component that enables students to apply and test their knowledge in computer graphics.

Second Semester

COS330 Computer Security and Ethics
This module develops an appreciation of the fundamentals and design principles for information assurance and security. Students will develop a clear understanding of the basic information security services and mechanisms, enabling them to design and evaluate the integration of solutions into the user application environment. Emphasis will be placed on services such as authorisation and confidentiality. Students will acquire knowledge and skills of Security Models such as the Bell-LaPadula, Harrison-Ruzzoconfidentiality service by focusing on cryptology and the practical implementation thereof. The student will be introduced to professional and philosophical ethics. At the end of the module students will be able to engage in a debate regarding the impact (local and global) of computers on individuals, organisations and society. The professionalism of IT staff will be discussed against national and international codes of practices such as those of the CSSA, ACM and IEEE.

COS326 Database Systems
This module builds on a prior introductory module on database technology and provides more advanced theoretical and practical study material.

COS333 Programming Languages
Programming languages are the backbone for software development. Each language has its own unique syntax and semantics, but there are many common concepts that can be illustrated and studied through the languages. This module concentrates on issues of object orientation, including delegation, iteration and polymorphism. It surveys how languages provide the basic building blocks for data and control, as well as exception handling and concurrency. At the end of the module, students will be able to appreciate the rich history behind programming languages, leading to independent principles that have evolved over time. They will be skilled at using a variety of programming languages (including new paradigms such as functional, logic and scripting), and will know how to learn a new language with ease. From this experience, they will be able to apply evaluation criteria for choosing an appropriate programming language in a given scenario.

Anti Semester

Year Long

COS301 Software Engineering
The module exposes students to problems associated with software development on an industrial scale. Overall goals of the module are: to become familiar with the latest trends in software engineering; to understand the software engineering process and to appreciate its complexity; to be exposed to a variety of methodologies for tackling different stages of the software lifecycle; to understand and apply the concepts of systems administration and maintenance; to complete the development of a fairly large object orientation-based software product. The module involves two software projects. The first is a project during which all students in the class collaborate to design and implement one software application. This project is completed in phases by rotating teams. It is due early May. The second project lasts the rest of the year. The project is completed in groups of approximately five (5) students and teaches students to take responsibility for a variety of roles within a group, and to understand the different requirements for these; to experience the advantages and problems of working in a group; professionalism with regards to particularly colleagues and clients. After the successful completion of this module, students should: understand the psychology of a client; work in groups; and have an appreciation for planning, designing, implementing and maintaining large projects. These qualities should place the students in a position in which they are able to handle software development in the corporate environment.

LAB300 Project lab module
Project lab module


First Semester

COS711 Artificial Intelligence (II)
This module focuses on three Computational Intelligence paradigms, namely Artificial Neural Networks, Artificial Immune Systems, and Fuzzy Systems. Within the Artificial Neural Networks paradigm algorithmic models of neural learning will be studied, including supervised, unsupervised, and reinforcement learning. Aspects that influence the performance of artificial neural networks will be studied in depth. Within the Artificial Immune Systems paradigm algorithm models of different views of the human biological immune system will be studied, including negative selection, clonal selection, network theory and danger theory models. The Fuzzy Systems paradigm include models of reasoning with uncertainty, specifically fuzzy logic and rough sets. Prior knowledge assumed include good programming skills and an undergraduate module in calculus.

COS720 Computer and information security (I)
This module focuses on Computer Security topics that are current and relevant to both academia and industry. The curriculum for the module is determined annually to reflect the current directions in Computer Security. The main topics included, but are not limited to: Applied computer/information/network/cyber- security, including application level security; the convergence of big data science and cybersecurity; security management; cryptography; and Privacy. Students will be challenged to contribute innovative research ideas in the field of Computer Security by completing a project.

COS730 Software Engineering, I
The course aims to deepen the understanding of requirements engineering, software development methodologies and quality assurance. The course further enables Software Architects to define, validate, document and analyze software architectures which aim to provide an infrastructure within which non-functional requirements like performance, scalability, security, integrability, accessibility, reliability, auditability, and architectural constraints like cost can address at system's design level.

COS740 Formal Methods (1)
THIS WEB PAGE IS THE STUDY GUIDE for COS740: FORMAL METHODS. Please carefully take note of all further announcements which will appear on this web page.

COS783 Digital forensics and investigations
(Please pardon poor paragraph breaks below.) <p>In 2016 COS783 will explore two related, but distinct themes: digital forensics and digital investigations.</p> <p>An immediate challenge when studying these two topics is that they are often conflated in the literature and in practice. An additional challenge is that the notion of digital forensic science is not mature yet, and arguably needs further development and creative thinking.</p> <p>Digital forensic science is situated in the contexts of other branches of forensic science, of the judicial and law enforcement systems and the requirements of being scientific. Given its potential impact on peoples' lives, ethics forms an inherent part of this context - not only in terms of the professional ethics of the practitioner, but also in terms of the nature of the discipline itself. Therefore a broad perspective is required. In this module students will be confronted by concepts dictated by the contexts described above. Many of these concepts will be outside the typical frame of reference of a computer science students - and, quite possibly, outside the comfort zones of some students.</p> <p>In general the purpose of forensic science is to apply science to conclude facts that may be of use in matters of law. In particular such factual conclusions assist the court to decide a legal dispute. The best known example of such a conclusion is arguably a finding that two DNA samples originate from the same donor. This may prove that a subject was indeed on the scene of a crime or that DNA found on such a scene originated from another donor. The word 'forensic' refers to the forum where legal matters were argued in Roman times. Forensic science therefore literally refers the application of science to reach conclusions that may be used in such a forum - or, in the modern context, in a court of law.</p> <p>The same factual conclusions that assist the court to decide a legal matter are often useful when the police, private investigators or similar entities investigate a crime or incident. Note that neither the court, nor the investigator relies solely on forensic evidence to reach its conclusion, though.</p>

COS782 Generic programming
This module introduces the concepts of generic programming in order to generate code at compile-time. Of particular interest is the automatic generation of design pattern implementations at compile-time for use at run-time. To this end, design patterns and compile-time programming techniques such as: basic compile-time programming constructs, object allocation, generalised functors, smart pointer and multi-methods are discussed in detail and applied to design patterns.

Second Semester

COS710 Artificial Intelligence (I)
This module focuses on two Computational Intelligence paradigms, namely Evolutionary Computation and Swarm Intelligence. Within the Evolutionary Computation paradigm, algorithmic models of Darwinian evolution will be studied, including genetic algorithms, genetic programming, evolutionary strategies, evolutionary programming, differential evolution, cultural algorithms and co-evolution. Within the Swarm Intelligence paradigm algorithm models of social organisms found in nature will be studied, including ant algorithms and particle swarm optimisation. These algorithms will mostly be studied in the context of complex optimisation problems, including multi-objective optimisation, dynamic environments, constraints, and finding multiple solutions. Prior knowledge assumed include good programming skills and an undergraduate module in calculus.

COS721 Computer and information security (II)
This module focuses on state-of-the-art information security/cyber-security topics that are current and relevant to industry. The curriculum for this module is annually determined to reflect the current research interests of the Cyber-security/Information security researchers in the department. The main topics include, but are not limited to: Big Data Science and Cyber-security (Identity Deception), Big Data Science and the Insurance industry, Security-aware cloud computing, and other related topics. Students will be challenged to contribute innovative research ideas in the field of Cyber-security/Information Security by completing a number of mini projects such as writing research papers and writing software programs.

COS731 Software engineering (II)
The course provides a comprehensive introduction to the fundamentals of requirements engineering and briefly characterises the evolution of requiremenst engineering from an informal phase in the software development process to a continious, project-spanning and cross-product activity. It outlines the seperation between the system and its context, and proposes a structure for the system context to facilitate its consideration in all requirements engineering activities. It outlines the characteristics of the three kinds of requirements and describes commonly used types of goals, scenarios and solution oriented requirements. The role of goals and scenarios in all core and cross-sectional activities of requirements engineering are discussed.

COS741 Model Checking
Model Checking is a technique for automatically proving whether a software program satisfies correctness requirements such as mutual exclusion, deadlock-freedom or starvation-freedom. In this module you will learn the theoretical foundations of model checking: modelling the state space of software as an automaton, formal specification of correctness requirements in temporal logic, algorithms for systematically exploring the state space of software, reduction of model checking to Boolean satisfiability solving. Moreover, you will learn how to write parallel software programs in the Promela language and how to use the model checking tool Spin to check the correctness of Promela language.

COS750 Educational software development
This module provides the foundation to evaluate and develop educational software. It will introduce didactic principles applicable to the discipline of Computer Science. Using these principles, educational software, such as tools for teaching programming, on-line testing software, and adaptive software to name a few, can be evaluated and developed. Computer Science topics of interest are: programming environments, persistence of information and knowledge, knowledge representation etc.

COS781 Data mining
Data mining is the analysis of (often large) observational data sets to find unsuspected relationships and summarise the data in novel ways that are both understandable and useful to the data owner(s). The analysis methods fall into two categories: Computational data mining and Statistical data mining. Computational methods originate from Machine Learning, which is a branch of Computer Science (Artificial Intelligence). Statistical methods originate from a branch of Statistics called Statistical pattern recognition. Observational data is data that was collected for some other purpose, e.g. banking data for loan applications and repayments, and is then used for analysis to determine good borrowers and risky borrowers. The objectives of the course are: to introduce the commonly used data mining methods, and to enable the student to acquire practical data mining skills. The course covers Computational and Statistical data mining methods as well as the commonly used process models for data mining projects. The topics covered include: process models (CRISP-DM and SEMMA), exploratory data analysis (univariate and bivariate), descriptive modeling (cluster analysis and association rules), predictive modeling (decision trees, neural networks, nearest neighbour, naive Bayes, ensemble models), statistical modeling (linear and logistic regression) and text mining. Knowledge of Artificial Intelligence (COS710), and basic Statistics will be an advantage for the student.

COS785 Computer graphics
This module is intended as an advanced module in real-time computer graphics and shader programming. The module includes the following topics: Advanced texture mapping, curves and curved surfaces, shadow mapping, skeletal animation, ray tracing and collision detection. The module assumes prior knowledge of introductory graphics as presented in an undergraduate module and a working knowledge of linear algebra and calculus.

COS790 Hyper-Heuristics and Combinatorial Optimization
Most artificial intelligence search techniques such as simulated annealing and genetic algorithms, explore the solution space directly. Hyper-heuristics aim to provide more generalized solutions to problems by exploring the heuristic space rather than the solutions space. The course will firstly provide an overview of single point and multipoint search. The four types of hyper-heuristics, namely, selection constructive, selection perturbative, generation constructive and generation perturbuative will be presented. Case studies applying hyper-heuristics to solve combinatorial optimization problems typical of industry, e.g. packing problems, logistics problems, will be studied.

Anti Semester

COS786 Parallel and Distributed Computing
Computational science relies on the analysis of often complex models, for its empirical data and analyses typically involve an enormous amount of calculations. Parallel computing is one means of reducing the time needed to complete such calculations. This module will examine the kinds of problems that lend themselves to parallel computation and the methods for implementing programs to solve such problems. The aim of the module is to provide a background for parallel and distributed computing as well as practical knowledge of the implementation of computational experiments. This course is suitable for students of Computer Science as well as for students of Computer Engineering who have already studied computer networks and concurrent programming at undergraduate level.

COS791 Special Topics (Image Analysis and Understanding)
In this course you will learn the foundations of image analysis and how we can use this to understand the image better. Topics that will be covered are: the human computer vision system, sampling and frequency domain processing (Fourier Transforms and other transforms), image processing operations, feature extraction and object description.

Year Long

COS700 Research Methods and Project
COS700 is COMPULSORY. All students ---also part-time students---


First Semester

MIT842 Computer Science in Perspective
Computer Science in Perspective: The aim of this module is to serve as an introduction to the discipline of Computer Science. We will be exploring algorithms on different levels of abstraction; some basic modelling of algorithms and code using UML; understanding the nature of programming and how to manage programmers. We will also be exploring some selected topics in Computer Science such as Formal Methods, Artificial Intelligence and Computer Security.

MIT860 ICT Infrastructure Management
The course covers various disciplines of IT infrastructure management from the perspective of people, process, and technology. Topics include performance management, network management, and capacity planning.

MIT800 Introduction to Big Data Science
The MIT (Stream C) - Big data Science focuses on the provision of an educational opportunity on a post-graduate level for researchers and practitioners in Big Data Science cognizant of the needs on the South African landscape. The definition of Big Data Science at the University of Pretoria includes, among other aspects: Big Data, Data Management, Machine Learning and Predictive modelling. Graduate professionals from industry can leverage this module and ultimately the MIT BDS degree to re-skill themselves in the foundational building blocks of Big Data Science whilst researchers can excel in Big Data and Data Science as research disciplines. The full MIT curriculum contains 180 credits, half of which are required courses and the other half is a research-based mini-dissertation. This module, referred to as, MIT 800 (Introduction to Big Data Science) counts 5 credits of the full degree. This is also the first and introductory module for the MIT degree in Big Data Science. In this module Big Data and Data Science will be defined and students will be exposed to different application domains within the participating University of Pretoria academic departments in the MIT degree. These departments include: Computer Science, Electrical, Electronic and Computer Engineering (EECE), Informatics, Information Science, Mathematics and Applied Mathematics, Industrial and Systems Engineering, Statistics, Computational Biology, Sport and Exercise Science. The presentation of this module will be in the format of a two-day workshop. The module will also expose students to real life projects in industry. We will look at industry projects such as the intelligent detection of fraudulent insurance claims and profiling of people on social media platforms.

MIT803 Introduction to Information Ethics for Big Data Science
The focus in this module is on Information Ethics and its place within the disciplines of Ethics and Philosophy. The following topics will be covered: Information Ethics and PAPAS (privacy, accuracy, property, access, security); Information ethics and the life cycle of big data; Information ethical dilemmas within big data in different disciplines, e.g. science, technology, engineering and mathematics (STEM), health sciences, economics and management sciences, social sciences and the humanities; and Case studies.

MIT802 Introduction to Data Platforms and Sources
Students will obtain hands-on experience on the following technologies such as: Python, Spark, Hadoop, R and SAS, Streaming, Data fusion, Distributed file systems; and Data sources such as social media and sensor data.

MIT804 Introduction to Mathematical Optimisation for Big Data Science
In this module students will be introduced to Mathematical Optimization through gaining knowledge about the theory and algorithms to solve optimisation problems. Topics will include: Linear programming, unconstrained optimization, equality constrained optimization, general linearly and nonlinearly constrained optimization, quadratic programming, global optimization, Theory and algorithms to solve these problems.

MIT801 Introduction to Machine and Statistical Learning
In this module students will be exposed to different categories of machine and statistical learning algorithms that can be used to manipulate big data, identify trends from the data, modelling trends for prediction purposes as well as modelling for the detection of hidden knowledge. Students will be exposed to various machine and statistical learning algorithms/methods and they will learn how to make the right choice with regard to these. Learning, in a supervised and unsupervised mode will be covered. Furthermore students will develop a practical understanding of methods that can aid the learning process, such as, new developments in regression and classification, probabilistic graphical models, numerical Bayesian and Monte Carlo methods, neural networks, decision trees, deep learning and other computational methods. This module also includes a visualisation component focusing on the encoding of information, such as patterns, into visual objects.

Second Semester

MIT853 Corporate IT Systems
This module focuses on the problems posed by large systems typically exemplified by integrated IT applications in the corporate sector. Facets covered are the relationships between components in the system (hardware, software, people) and the processes in the system. The following themes will be covered: Enterprise Resource Planning (ERP) Systems, Customer Relationship Management (CRM) Systems, IT Security &amp; Privacy, Free/Libre/Open Source Software and Corporates, Modern Mainframe Systems.

MIT850 Life Cycle and Maturity Models for IT
The module aims to introduce the fundamental techniques of software engineering, by looking at maturity models, software life cycles and methods, standards and procedures to assess and measure quality of processes.

MIT862 IT Research
MIT862 introduces the student to research skills required to complete the research required for the mini-dissertation.

MIT805 Big Data
This module focuses on tools for Big Data processing. The focus is on the 3 V- characteristics of Big Data namely volume, velocity and variety. Students will learn about the different architectures available for Big Data processing. The map-reduce algorithm will be studied in detail as well as graphical models for Big Data. The module will include a significant component of practical work (hands-on) where students will be exposed to real use cases that are or can be implemented on Big Data platforms.

COS801 Big Data Science Elective (Deep Learning)
The focus of the course is on Machine Learning from a Computer Science perspective. Topics may include feedforward neural networks, neural networks training methods (gradient descent etc.), target free training methods for neural networks, recurrent neural networks for time series prediction and an introduction to deep learning algorithms such as convolution neural network and LSTMs.

COS802 Big Data Science Elective
Data and information is everywhere. No organisation can function nowadays without it. What is more, data is more often than not worth huge amounts of money. How do we keep it secure? How do we investigate crimes? Big data science is a relatively new science that has become crucial in enabling and managing cyber security and digital forensic investigations. Cyber security follows a proactive approach in that it attempts to secure our data in order to make sure it does not end up in the wrong hands. Cyber security threats exist and cyber criminals find vulnerabilities around the security techniques. Inevitably, when security is circumvented, investigations need to be conducted. Digital forensic investigations follow a reactive approach in order to uncover the cyber criminal&#39;s actions and/or identity. Big data science allows the enabling technologies for cyber security as well as the investigative technologies for digital forensic investigations to accomplish their goals.

MIT806 Big Data Management
Big data management is the governance, administration and organization of large volumes of both structured and unstructured data. Aspects included in big data management are: big data as organizational asset, harnessing big data as disruptive technology for competitive advantage, big data quality and accessibility; management strategies for large and fast-growing internal and external data, big data infrastructure and platform management, and big data policy, strategy and compliance.

STK801 STK801
STK801 Introduction to text analytics and topic modelling.

WTW801 Big Data Science and Mathematical Finance\Financial Engineering.
The module will introduce the relevant concepts of Mathematics of Finance/ Financial Engineering as they relate to Big Data Science. We look at the portfolio optimization investment problem and study how and when we benefit from high-frequency data. On the other hand, study multivariate volatility matrix estimation associated with financial price modelled by diffusion processes. Appropriate programming language tools will be used.

INF801 Big Data Science Elective (Digital Economy)
To develop a management perspective of some key concepts and issues pertinent to the digital (or internet) economy.

INF802 Big Data Science Elective (ICT Project Management)
Principles and techniques of project management with specific reference to ICT projects.

INL801 INL801

ERZ801 Big Data Science Elective (Data Fusion)
This module focuses on data fusion for Big Data Science.

ERZ802 Big Data Science Elective (Internet of Things)
The Internet of Things (IoT) envisages an advanced inter-connectivity of devices, systems and services via the Internet, covering various protocols, domains and applications. It is based on the premise that all devices (people, machines, etc.) are connected always, anywhere, and it is estimated that there are approximately 8,4 billion Internet-connected devices currently in use. The proliferation of these devices in a communicating–actuating network where sensors and actuators blend seamlessly with the environment around us, results in the generation of big data. The big data generated from IoT is high in velocity (the rate at which data is generated), volume (based on the number of devices) and takes on a variety of forms (due to the heterogeneity of the devices). It is thus essential that storage platforms and facilities are implemented that can handle the sheer volumes of data and that the incoming data is processed and analysed so that new knowledge is created and intelligent decision making occurs.

Anti Semester

Year Long

MIT840 Mini-dissertation (Class-based portion)
This part of MIT840 is the final preparation phase for the research component of the MIT degree.

MIT808 Big Data Science project
This module provides the opportunity to students for demonstrating the application of the theoretical Big Data Science knowledge gained in the core part of this degree. Students are expected to identify and work with a collaborator who is taking ownership for the project. This collaborator can either be an industry partner or a researcher within one of the participating departments. Projects will be based on the entire big data lifecycle as discussed in this degree programme. This includes the gathering of data of a significant size as well as a final technical report describing the process followed and the deliverables. Depending on the complexity of the project, students can apply to work in groups with a maximum of two members. The proposed project will be subject to approval by the Department Computer Science.

MIT807 Mini dissertation in Big Data Science - Continuing
Students may choose a supervisor/co-supervisor from any of the participating departments, which includes, but are not limited to: Electrical, Electronic & Computer Engineering (EECE), Informatics, Information Science, Mathematics and Applied Mathematics, and Faculty of Health Science departments (Computational biology, Family Medicine, Radiology). Additionally to the last mentioned, a supervisor/co-supervisor will also be allocated to all students from a department in the School of Information Technology. It is expected that a submission to a relevant journal is made during the course of the study. All the other faculty and university regulations for a master’s degree will also be applicable over and above those listed at the beginning of this paragraph.

MIT000 MIT000
Module for general MIT announcements


First Semester

Second Semester

Anti Semester

Year Long


First Semester

Second Semester

Anti Semester

Year Long

All content copyright © Department of Computer Science, School of IT, University of Pretoria, South Africa