Rhodes University Undergraduate Computer Science Course 3
Computer Science 3
CS301
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.
Web Technologies
This module introduces the core technologies underpinning the front-end of current Web applications: HTML, CSS and JavaScript. Then considers PHP and a relational database as examples of technologies for the back-end. Topics include the server/client request/response loop, the HTTP protocol, mark-up languages, the Document Object Model, AJAX-style interactions and core security considerations. The emphasis of the course, based on the book by Connolly and Hoar, “Fundamentals of Web Development”, is on the overall architecture of Web applications and how the various technologies help in the construction of applications that go beyond desktop applications.
Prerequisites: CS2
CS302
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.
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. F#, a strongly-typed cross-platform multiparadigm language, will be used for practical work during this module.
Networks
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.