Computer Science 2


Course Co-ordinator: Mr Josh van Staden

Advanced Programming
This module builds on the data structures and algorithms covered in Computer Science 1, introducing several new topics. Dynamic data structures are an important focus of the course and underlie the concepts of abstract data types. Important classes of algorithms (such as sorting and searching) are considered and used to introduce simple aspects of algorithm analysis.

This module introduces the logical basis of computer design and how the major components fit together, with emphasis on instruction execution. You will learn how low-level instructions that can be executed directly in hardware relate to code in a higher-level language, using C as an example. The main focus is on understanding the hardware layer by coding in MIPS assembly language. You will also gain an understanding of factors that affect the performance of a computer.

This module introduces the syntax of the C++ programming language, with emphasis on low-level constructs and on features that have not been encountered in C#. The course fosters understanding of how lower-level, unmanaged languages are implemented, and how to program for performance making use of your understanding of the real machine.

Prerequisites: CS I


Course Co-ordinator: Mr Josh van Staden

Theory of Computing
This module focuses on the more theoretical aspects of Computer Science. It covers automata (including Turing machines) and specifications of formal languages, as well as the computability of problems. It also provides insight into the complexity of algorithms, and introduces aspects of programming language grammars, which are used in the Translators course in third year.

Operating Systems
This module covers the fundamental considerations involved in the design and use of a modern operating system.
The topics include:
• Introduction to operating systems
• Processes and threads
• Memory management
• Process scheduling.
• Input / output and files
The emphasis in the course is on low-level programming in C.

The Databases module centres on the core of most modern software: data storage and retrieval. It gives a brief introduction to database concepts and the language used for database interaction – SQL – before delving into the role of databases in networked GUI applications. Students will be exposed to the PostgreSQL relational database management system and its client application pgAdmin. The module will also briefly touch on NoSQL, an alternative database paradigm that is used in scalable web-based applications and social networks.

Prerequisites: CS201

Last Modified: Fri, 19 Jan 2024 09:18:00 SAST