Computer Science

Unit description

Advanced Machine Learning and Artificial Intelligence 
This unit focuses on advanced machine learning and artificial intelligence techniques. It covers the main concepts and theories behind modern machine learning models. It also covers the development of deep neural networks and their application to solving real-world problems. You will learn how to use programming languages such as C and C++ to develop highly efficient deep learning models. Students will also learn how to use scripting languages, such as Python, which are suitable for prototyping, running and customising existing models. Topics that will be covered in this unit include: 
• Computational Performance 
• Linear Neural Networks 
• Modern Convolutional Neural Networks 
• Multilayer Perceptrons 
• Optimisation Algorithms 


Students will be introduced to various practical applications of deep learning including computer vision, natural language processing and recommender systems. 

Data Structures and Abstractions 
This unit introduces abstract data structures (ADS) and associated algorithms. ADS such as arrays, graphs, lists, two-dimensional structures, trees and vectors are studied along with various representations, in addition to ADS that utilise these structures. Complexity analysis is used throughout the unit. The programming language currently used in this unit is C++. 

This unit focuses on database design, implementation and management. Topics include data modelling, database administration, logical and physical database design, non-relational databases, recovery, relational model, security, standard query language (SQL) and transaction management. The theory material is complemented by practical work using common database management systems. 

Information Technology Project Management 
This unit identifies, explains and explores a project management approach to information and communications technology (ICT) systems development. In particular, the content is specifically designed to deliver practical insights into managing and coordinating the activities of an ICT project. 


Each topic in the unit covers content that explains the journey from project initiation to project closure, and students can gain an understanding of these issues by assessing and making decisions about a real-world scenario. As a part of this knowledge and skill development, students will learn about key aspects of cost management, procurement management, project analysis, project integration management (PIM), quality management, resource management, risk management, scheduling, scope management, and stakeholder and communications management. Additionally, students can gain an understanding of key documentation and industry standards, which can help them in their careers.

Intelligent Systems 
This unit offers an introduction to the fundamental concepts and techniques of artificial intelligence (AI), focusing on expert systems to solve engineering problems, data mining, data analysis for industries and intelligent agents in computer games. 

Topics include fuzzy logic, genetic algorithms, intelligent agents, introduction to artificial intelligence and applications, introduction to game AI, neural computing, rule-based expert systems, state machines and methods of evaluating these technologies. 

Introduction to ICT Research Methods 
This unit provides an introduction to research in the information and communications technology (ICT) discipline. It explores the kinds of research questions addressed in ICT research and provides an opportunity for students to understand the broad range of research approaches used in ICT research including action research, case study research, design research, experimental research and survey research.  


Students will develop both research and project management skills, and gain the knowledge and skills needed to critically evaluate the ICT research literature.

IT Professional Practice Project 
Students in this team-based unit will use information technology (IT) approaches to solve real-world problems from a range of domains. The creation of relevant project deliverables will require students to build upon skills developed during their studies. They will learn to appreciate the interdisciplinary nature of their project and how the skills of team members from different IT majors are required to solve complex problems. Project management and communication with clients and other stakeholders in a professional manner will be emphasised. 

Operating Systems and Systems Programming 
This unit aims to provide an understanding of the design and implementation of modern operating systems and how they provide an interface to computer hardware resources. It also covers the use of operating systems’ service routines to construct efficient systems programmes. Topics covered include process management, memory management, mechanisms for inter-process communications, file systems and protections, network programming using sockets and the UNIX system call interface. 

Principles of Computer Science 
This unit is designed to develop problem-solving and programme design skills by using an object-oriented programming language. Major topics include algorithm design, procedural abstractions, use of libraries as collection of black-box code modules, the concepts of pre- and post conditions, strings, arrays, an introduction to object-oriented concepts including data abstraction, encapsulation, classes and object references, inheritance, introduction to recursion, streams and file input and output, and the definition and use of common classes — lists, stack and queues. 

Software Architectures 
The objectives of this unit are to study different software architectures and their implications for software design. Major topics include batch versus run-time validation design, Client-Server architecture, design patterns, dynamic binding and inheritance, event-based architecture, finite state machines and
graphical user interface (GUI) design, multithreading and synchronisation, Petri Nets, pipe-filter architecture and regular expressions, object-oriented design and unified modeling language (UML), layered architectures and other architectures. The Java programming language will be used to demonstrate implementations.