Computing Science Modules

Year 1

Team Project 3

SIT4036

To design and implement, in a team, a software system that solves a (more-or-less) well-understood problem; to achieve a deliverable product in the form of a piece of working software.


Professional Software Development 3

SIT4032

The aims of the course are to: 
introduce students to modern software development methods and techniques for building and maintaining large systems;
provide an opportunity for the students to apply these methods and techniques presented to them in the context of an extended group-based software development exercise; 
make the students aware of the professional, social and ethical dimensions of software development; 
instil in the students a professional attitude towards software development.


Advanced Programming 3

SIT4021

To develop practical expertise in, and understanding of, concurrent programming in Java;
To explore a variety of different concurrency control mechanisms;
To substantially develop the knowledge of C gained during summer preparatory reading;
To develop the students' experience and understanding of programming in a low-level language;
To develop the ability to craft efficient and effective code in a pointer-rich language;
To introduce concurrent programming in C using the PThreads library;
To further develop the ability to select and re-use existing software components and libraries;
To enhance the students' skills in engineering software as interacting sub-systems, using interfaces and libraries to manage medium sized software development projects.


Algorithmics 3

SIT4022

To develop the student's skills in the design and analysis of algorithms; 
To study algorithms for a range of important standard problems; 
To introduce the student to the theory of NP-completeness together with its practical implications;
To make the student aware of fundamental concepts of computability.


Database Systems 3

SIT4038

This module aims to develop the software engineering and database administration skills required for designing, creating, running and developing a relational database application and its associated application software suite. This will include extension of pre-existing systems and arrangements for extending operational systems; understanding of how conventional programming languages interact with databases; understanding of the fundamental concepts, theories and methods of the relational data model; and an introduction to Information Retrieval concepts and techniques.


Interactive Systems 3

SIT4028

The aims of the course are:
to offer students the opportunity to become familiar with one of the most important interaction paradigms;
to enable students to become skilled in the use of techniques and tools for modelling, implementing and evaluating interactive systems;
to enable students to apply the theories, techniques and tools presented in the course via challenging exercises which combine design, implementation and evaluation.


Networked Systems 3

SIT4030

To introduce the fundamental concepts and theory of communications;
To provide a solid understanding of the technologies that support modern networked computer systems;
To introduce low-level network programming concepts;
To provide our students with the ability to evaluate and advise industry on the use and deployment of networked systems.


Operating Systems 3

SIT4031

To introduce the students to the styles of coding required with an OS; 
To give a thorough presentation of the contents of a traditional OS, including the key abstractions;
To show the range of algorithms and techniques available for specific OS problems, and the implications of selection specific algorithms for application behaviour; 
To develop an integrated understanding of what the computer is doing, from a non-naive view of hardware to the behaviour of multi-threaded application processes; present the alternatives and clarify the trade-offs that drive OS and hardware design.


Programming Languages 3

SIT4033

This course aims to:
provide a conceptual framework that will enable students to understand familiar programming languages more deeply and learn new languages more efficiently;
show how the syntax of a programming language can be formalized;
explain the functions of compilers and interpreters, how they interact, and how they work;
show how to implement a compiler using compiler-generation tools.


Professional Skills & Issues

SIT4037

This course introduces the legal, professional and social issues involved in the widespread development and use of computational devices, and stimulates students to develop their own, well-argued positions on many of these issues.