Rhodes University Logo
Rhodes > Computer Science > Studying > Undergraduate > Computer Science 3

Computer Science 3

CS301

Course Co-ordinator: Prof Alfredo Terzoli

Web Technologies
This module introduces the Web as a platform for software development.  The primary technologies used are HTML and JavaScript, with some reliance on the widely-used jQuery library.  Topics include asynchronous programming, markup languages, the server/client distinction, HTTP, statelessness, security considerations, JSON, AJAX, the Document Object Model (DOM), routing, and related technologies such as CSS and SVG.  The emphasis on the course is on the practical development of simple, secure web applications, accompanied by a theoretical understanding of how and why the Web environment differs from desktop application development.

Programming Language Translation
This module is concerned with the theoretical and practical aspects of programming languages and their translators. 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.

Prerequisites: CS2

CS302

Course Co-ordinator: Prof Alfredo Terzoli

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 (www.tryfsharp.org/Learn), will be used for practical work during this module.

Programming Styles
This module introduces the concept of language-agnostic programming styles and their related constraints. At the end of the module, students should understand, be able to use, and understand when to use different styles of programming (object-oriented, functional, fluent, interface-based, streaming) that a working developer might encounter across languages, frameworks, and problem domains.

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, which walks through the classical five layers of the Internet protocol stack starting from the top, the application layer.

Prerequisites: CS2

Last Modified :Fri, 22 Sep 2017 10:36:18 SAST

Related Content