Computer Science 3
CS301
Course Co-ordinator: Prof Philip Machanick
Object Oriented Analysis and Design
In your second year, you were introduced to the concepts of object oriented programming, using C++ as the vehicle for these new concepts. In this module, you will learn how to use the object oriented way of thinking to analyse and design computer systems. The results of your analysis and design can later be used to implement the systems using object oriented programming tools. You will be shown how this can be done in C++.
Programming Language Translation
This module is concerned with the theoretical and practical aspects of programming languages and their translators. A simple assembly language and assembler are studied. This is followed by a discussion of the theory behind modern high level languages, which leads to the practical aspects of writing compilers and using compiler writing tools. An in-depth study is made of a compiler for a simple imperative language.
Prerequisites: CS2
CS302
Course Co-ordinator: Prof Philip Machanick
Functional Programming
This module introduces a different (from the usual) programming paradigm. The Haskell language will be used.
Operating Systems
This module covers the fundamental considerations involved in the design and use of a modern operating system.
The topics include:
- Introduction to Operating Systems
- Processes and Threads
- Memory management
- Process Scheduling.
- Input / Output and Files
The emphasis in the course is on low-level programming in C.
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
CS303
Course Co-ordinator: Mr James Connan
Game Theory
Game theory uses mathematical models to study and analyze strategic interactions between agents. This module is designed to provide an understanding of the fundamental concepts in game theory as applied to computer science in general and gaming in particular.
Web Security
This course addresses the growing need for the integration of various aspects of Information Security into the Systems Development Lifecycle. Focusing on threats to web based systems and applications, common flaws and appropriate remediation and defense techniques are explored. Concepts covered include SQL Injection, MITM attack, Cross Site Request Forgery, XSS and the growing threat posed by “web 2.0” applications. The focus will be on the concepts behind particular vulnerabilities and their exploitation rather than any specific programming language implementation.
Game Development
This course covers the basic tools for building two dimensional and three dimensional computer games. 3D geometry, modeling, and textures allow us to build computer models. Transformations such as scaling, translation, and rotation allow us to combine multiple models into a scene, or world. Lighting and shading add more realism to the scene. Skeletal and skinned animation techniques provide movement for our game characters. First or third-person moving cameras provide a view of the world, and this view is projected onto a computer screen via further transformations. Sprites and billboards provide for 2D overlays onto the 3D scenes. Architecturally, the Model-View-Controller paradigm decouples the underlying game logic and game control from the on-screen presentation. Implementation of gaming applications like a 3D fly-through will be done in C# using the Microsoft’s XNA Game Studio.
Web Technologies
The Web Technologies modules will address some of the recent advances in web application development. One of these new technologies is the access of web content via mobile devices, and the integration of mobile devices onto the WWW as servers. New web technologies such as REST, SOAP, AJAX, XML will be covered, along with their integration in what is commonly known as Web 2.0 and the mashups which constitute it.
Prerequisites: CS201
