#### Course Code: CF

## Computing Fundamentals

**Description**

This course introduces the learner to the fundamental building blocks associated with the hardware and software that make up a typical computing system. The course is a prerequisite for learners that intend to enter the IT industry in a technical capacity. The course is divided into three sections as outlined below:

**COMPUTING MATHEMATICS**

Set Theory

Set Theory

In this section a brief overview of set theory is given in order to

- define the notation which will be used in subsequent sections of this and related course notes
- examine the basic set operations
- introduce the fundamental number sets.

**Number Systems**

This topic is designed to refresh the learner’s understanding of the basic arithmetical operations and to elaborate on number systems
as they relate to the implementation of certain data types in any computer architecture. Included are the representation and conversions of binary, octal and hexadecimal numbers and
the encoding of IEEE floating point numbers.**
Boolean Algebra**

In this section an overview is given of the basics
of Boolean Algebra and the relationship to

- programming concepts
- digital circuits.

**Graph Theory**

This topic gives a brief introduction to graph theory. It illustrates the application of graphs in the implementation of tree structures, directed graphs and the relationship to finite state machines and regular grammars.**
Basic Statistics**

In this topic basic statistical methods and distributions are covered.**
Data Structures**

A description and the use of the major abstract data structures that are used to implement both
hardware and software related systems.**
COMPUTER HARDWARE
Architectural Model**

A brief overview of the basic components of the von Neumann computer model with emphasis on target and host machine architectures. Also included is a description of combinational and micro-coded machine architectures thus addressing RISC and CISC type configurations.

Finally a introduction to multiprocessing covering both SMP and MPP architectures.

**Instruction Processing**

A detailed introduction of aspects such as cache memory, instruction pipelines, etc. This is described using a pseudo machine which allows the learners to delve into symbolic and assembler codes thus understanding the instruction processing concepts in detail.

**Memory Subsystems**

In this section a hardware view of memory systems such as cache, main and virtual memory implementations are given.

**Storage Subsystems**

A description of storage subsystems with emphasis on Storage Area Networks (SAN) implementations.

**Networking**

A basic overview of the TCP/IP protocols and the Internet.

**COMPUTER SOFTWARE**

Operating Systems

Operating Systems

In this section a theoretical overview of the various functional management programs that constitute an operating system is given. In particular the following is addressed:

- The user interface or shells
- Process Management.
- Storage Management
- Network management

**File Systems**

This section looks at the basic file structures including file directories and flat files. In addition the mapping and implementation of serial, direct and index files onto flat files are explained.**
Database Management Systems**

This chapter introduces relation database technology. A brief view of tables and their relations are given. In addition the learner is introduced to the Structured Query Language (SQL).**
Programming Languages**

A thorough treatise is given on the origins and usage of various programming languages that are in use in the industry today. The development cycle is explained and concepts such as compilers and interpreters are discussed.**
Algorithms**

This section is a guide to algorithmic design and presentation. In addition the use of Finite State Machines (FSM’s) to describe algorithms is shown. Finally a set of generic algorithms are
shown.**
Object Oriented Technology**

In this chapter object technology concepts such
as classes, inheritance, composition and data encapsulation is described via a set of practical examples.**
Networking**

In this topic the Internet Protocol (IP) and Transmission Control Protocol (TCP) are described from a software perspective. The
Internet and the associated Universal Resource Locator (URL) and domains are explained. Also given is an overview on browser technologies.**
METHODOLOGY & PLATFORM**

The course is practical in nature in that a series of online tutorials guide the learner through the practical application of the theoretical aspects taught in the course. Included are optional exercises on:

- The preferred computer platform for the practical sessions is Linux.
- Relational DBMS and SQL. The DBMS used is MySQL.
- HTML concepts
- Linux shells specifically the Bourne Again Shell (BASH)

**OUTCOMES**

At the completion of the course the learner will be able to:

- Recognize computer numbers and determine their context. In addition the learner will be able to convert number from one radix to another and perform basic arithmetic operations using numbers encoded in different radices.
- Construct truth tables to determine prepositions. Perform various Boolean calculations.
- Analyse statistical distributions and calculate the mean and standard deviation of such distributions. Calculate a simple arithmetic regression line and forecast future trends.
- Analyse the paths in a graph and construct finite state machines (FSM’s) and associated matrices to solve certain classes of problems. The learner will also be able to describe regular sets and their relationship to FSM’s.
- Select a given abstract data structure to implement a solution to storing data in a manner as dictated by the problem class.
- Describe the different computer architectures in use today.
- Describe the basics of storage and memory.
- Describe the major functional managers of a typical operating system. They will be able to discuss the advantages and disadvantages of open source OS’s like Linux vs proprietary systems such as Microsoft Windows, and IBM’s zOS mainframe operating system.
- Execute simple Linux commands in a shell.
- Describe the file system and directory structure of a Unix/Linux system.
- Design a simple relational database and propagate data into the database plus perform queries to the database.
- Describe the basic functionality of the Internet and associated browsers. Create a simple WEB page using HTML.
- Show an understanding of OO techniques.
- Analyse work based problems and design appropriate algorithms.

**MATERIAL**

The following material is supplied:

- A full set of notes covering the course outline.
- A CD with solutions to all the assignments plus all the examples covered in the notes.

PREREQUISITES

PREREQUISITES

Grade 12 with mathematics.