Computer Science 3

CS301

Course Co-ordinator: Mr Josh van Staden

Web Technologies

This module introduces web technologies used at both the front- and back-end of current Web applications. Front-end technologies that will be discussed include: HTML, CSS and JavaScript. PHP and MySQL (another relational database) will be discussed as examples of technologies for the back end. The security considerations will focus on the core concepts of Web application security primarily focusing on the OWASP top 10 security vulnerabilities and how one can develop a secure website. Topics include the client/server request/response loop, the HTTP protocol, mark-up languages, the Document Object Model, technologies for asynchronous communication and core security considerations. The emphasis of the course, based on the course textbook by Connolly and Hoar, is on the overall architecture of Web applications and how the various technologies help in the construction of applications that go beyond desktop applications.

Programming Language Translation

This module is concerned with the theoretical and practical aspects of programming languages and their translation. A simple stack-based virtual machine (the Parva Virtual Machine) is studied and programmed at the assembler level. This is followed by a discussion of the theory behind modern high-level languages, which leads to the practical aspects of writing compilers, facilitated by the use of compiler writing tools. An in-depth study is made, not only of a compiler for a simple imperative language (Parva, targeting the stack-based PVM), but also of various other syntax-directed software.
The course is based on “Compiling with C# and Java”, by Terry, P.D., published by Pearson, 2005. However, as this book is out of print, a substantial excerpt thereof will be provided as printed course notes.

Prerequisites: CS2

CS302

Course Co-ordinator: Dr Zelalem Shibeshi

Functional Programming
This module introduces a style of programming that avoids state, mutability, inheritance, and nulls and favours purity, immutability, higher-order functions, and options. A strongly-typed cross-platform language will be used for most practical work during this module.

Machine Learning

This module introduces the fundamentals of machine learning, focusing on data-driven models and the core principles behind them. It relies on key concepts supported by mathematical ideas involving linear algebra and calculus, while integrating applications and hands-on Python work at every stage.

Networks
This module introduces the fundamental principles of computer networking, primarily focusing on the practical study of the Internet. We will explore areas such as protocol design and the standardisation of computer networks protocols. The module closely follows the structure presented in the course textbook by Kurose & Ross, which guides us through the five traditional layers of the Internet protocol stack, starting from the top, the application layer.

Prerequisites: CS2

Last Modified: Tue, 24 Feb 2026 15:27:45 SAST