Computer Science 3
Course Co-ordinator: Prof Karen Bradshaw
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.
Course Co-ordinator: Dr Yusuf Motara
Software design and Practices
This module introduces the concept of language-agnostic programming styles and exposes students to the kind of supporting tools, practices, and workflows that are used by professional software developers.
This module introduces a style of programming that avoids state, mutability, inheritance, and nulls and favours purity, immutability, higher-order functions, and options. F#, a strongly-typed cross-platform multiparadigm language, will be used for practical work during this module.
This module provides an introduction to computer networking principles, grounding them in the practical study of the Internet and covering areas of protocol design and standardization of computer networks protocols. The module follows very closely the approach of the textbook by Kurose & Ross, “Computer Networking: A Top-Down Approach”, which walks through the classical five layers of the Internet protocol stack starting from the top, the application layer.
Last Modified: Fri, 01 Mar 2019 10:48:52 SAST