School of Computing FACULTY OF ENGINEERING MEng, BSc Computer Science with Artificial Intelligence Year 1 COMP1212 Computer Processor Effective programming depends on understanding not only how to give a machine instructions (the software), but also on how the machine carries out those instructions (the hardware). Modern hardware is built up in layers upon simple structures, and this module will introduce the student to how a computer chip actually computes, how data is represented in memory, and how simple electronic circuits are built up to provide complex logic. COMP1211 Computer Architecture This module introduces students to the structure and components of modern computer architectures, including memory, machine level languages, the fetch execution cycle, data storage, and input/output. Multi-core architectures, parallelism and scalability in modern systems. COMP1511 Introduction to Discrete Mathematics This module covers combinatorics essential in determining the complexity of algorithms, general techniques for solving problems, probability and an introduction to graphs that are a powerful tool for modelling problems such and the structure of the World Wide Web, or to determine a shortest path between two cities. COMP1711 Procedural Programming Learn how to develop a solution to a problem and design and implement its solution as a procedural program. Learn how to design robust, debug to identify errors and test to ensure design requirements are met. COMP1911 Professional Computing Introduces the tools and processes required by a computing professional to do their job properly; including software engineering tools; team working skills, project management techniques and social and legal issues that must be considered. COMP1121 Databases This module covers the principles of the design and implementation of database management systems, including the theory of relational databases and E-R modeling; and the use of SQL to create and manipulate data in a database. COMP1421 COMP1721 Fundamental Mathematical Concepts Object-oriented Programming This module focuses on some mathematical concepts and techniques that are fundamental to computing. We study propositions and how they combine using logical operators and quantifiers (concepts which underpin automated reasoning and system specification). This leads to a study of rules of inference and different proof techniques used for verification of program correctness, system security and complexity analysis. These concepts are then applied in the study of sets, functions, relations (the basis of relational databases), vectors and matrices (fundamental for applications in mathematics, computer science, physics and engineering. Implement using classes and Object Oriented concepts such as inheritance, encapsulation and abstraction. Contrast OOP to procedural programming techniques. Understand and implement common abstract data types such as stacks and queues. COMP1921 Programming Project Develop experience with professional programming tools and techniques, such as version control, unit-testing, secure and defensive coding. Analyse existing for consistency with coding standards and documentation. Construct to a given specification and demonstrate how it meets the specification. COMP1011 Programming For The Web Recognise the need for programming as a part of modern web applications. This
COMP1021 Introduction to Web Technologies module provides an introduction to programming, using languages such as Python and JavaScript that are particularly relevant to web application development and other tasks involving the web. In this module, you will learn how to use HTML, CSS and JavaScript to develop the content, presentation and interactive features of web sites and web applications - i.e., all those parts that run within a web browser. You will learn how to test and debug web pages using a web browser and how to ensure that your pages conform to accessibility standards and relevant legislation. Year 2 COMP2211 Operating Systems The role of the operating system. Modern operating system architecture. Process management, memory management, file systems and I/O. Example systems, from mobile to HPC platforms. COMP1321 Formal Languages and Finite Automata Develop models of computation, the theory of automata and grammars and the basics of computability. Covers Turing Machines, the Church-Turing thesis and undecidable problems. COMP2611 Artificial Intelligence Artificial Intelligence is a rapidly evolving field. This module provides an introduction to a broad range of topics in Artificial Intelligence. You will learn how to design and implement simple intelligent agents; the principles of knowledge representation and inference, machine learning and explore application in areas such as text mining, image analysis and bio-inspired computing COMP2931 Software Engineering Understand the software life-cycle. Select a development process appropriate for a given task and context. Use appropriate tools to manage the development process. Work effectively as team to capture the requirements, produce a design and complete the implementation for a given task COMP2221 Networks Network communication protocols and n-tier architectures. Standard protocols for common networked tasks. The client-server model. Implementation of scalable networked applications. COMP2811 User Interfaces The role of usability and user experience in application design. The foundations of designing interactive systems. Implement graphical applications using a user interface toolkit. Design considerations for effective human-computer interaction. Develop low-fidelity prototypes for human-computer interfaces COMP2711 COMP2721 Algorithms and Data Structures I Algorithms and Data Structures II This module focuses on key algorithms and data structures,that form the toolkit of a modern computer specialist. Practicing with classical algorithms and data structures students will learn how to combine them in order to produce efficient algorithms for solving problems There may exist several algorithms for solving the same problem, and it is important to produce the one which is efficient in terms of the computation time and space requirements. In this module you will start to develop skills in designing algorithms Our primary goal is to identify the most efficient solutions among those available and to provide a formal justification of that choice. COMP2011 COMP2021 Web Application Social and Mobile Web This module focuses on those parts of a web application that run remotely on a web server rather than locally within a web browser. You will learn about how databases are a key component of many web applications and you will learn how to use a web application development framework to create a database-driven application such as an online store. In this module, you will learn how to design, implement and deploy web applications that work effectively on smartphones and tablets. You will also learn how to develop applications that integrate with and use the services offered by popular social networks.
COMP2421 Numerical Computation Accuracy of floating-point computation. Standard numerical algorithms for linear equation systems, nonlinear equations, ordinary differential equations and data interpolation. The design of robust and efficient implementations in. COMP2121 Data Mining This module covers the principles of the design and implementation of database management systems, including the theory of relational databases and E-R modeling; and the use of SQL to create and manipulate data in a database. Year 3 COMP3931 Individual Project The Individual Project provides the opportunity for you work on a significant research and/or development project related to your degree programme. You will work closely with a supervisor to design, implement and evaluate a solution to your chosen project and present the work both as a dissertation and short presentation to peers and staff. COMP3221 Parallel Computation Describe parallel computing architectures for distributed and shared-memory programming. Understand the efficiency and scalability of parallel algorithms. Design parallel algorithms for a range of tasks. Implement and benchmark parallel algorithms on a range of architectures. COMP3211 Distributed Systems This module presents the main characteristics of distributed systems and looks at some of the challenges that are faced by designers and implementers of such systems. It investigates how sophisticated multi-tier architectures can be supported, and examines how this is achieved using distributed object technology, Web services and cloud computing. COMP3222 Mobile Application Understand the constraints of developing for mobile devices from hardware, interface and networking. Design and structure the user interface and underlying software structure for a mobile application. Integrate input from hardware sensors and networked data and services. Implement mobile applications on a given platform. COMP3121 Data Science The aim of the module is for students to develop a practical understanding of analysis techniques that may be used to gain insights from complex data. The module covers the theoretical aspects of a variety of approaches, with an emphasis on statistical methods, and practical application using established tools. COMP3811 Computer Graphics This module covers the core concepts behind 3D computer graphics, including rasterisation, raytracing, hardware-accelerated projective rendering, geometric modelling of curves and surfaces, surface texturing, hierarchical animation and introductory shader-based rendering. COMP3911 Secure Computing Security is an increasing problem for all computer systems. Users, administrators and developers all need to be aware of risks and the need to develop systems that are resistant to known attacks. In this module you will learn about threats to the security of a software system, design and implement software that is resistant to well-known attacks and learn how security incidents can be detected and analysed. COMP3223 Cryptography This module provides a thorough introduction to cryptography and its applications. We cover the mathematical foundations of cryptography and discuss modern cryptosystems in detail. This includes both symmetric and public-key systems like AES and RSA and their usage and applications in digital signatures and complex cryptographic protocols like digital currency and electronic voting. COMP3011 Web Services and Web Data In this module, you will learn how search engines and other key web services
COMP3940 Graph Algorithms and Complexity Theory work. You will learn how cloud computing provides such services and how to build applications that make use of these services. You will also learn how to incorporate open and linked data into web applications. Many problems arising in diverse areas such as transportation, telecommunication, molecular biology, industrial engineering, etc. can be modeled by graphs. These problems then reduce to optimizing some graph parameter. Since the objects we are dealing with are finite, we can envision an algorithm that would list all the possibilities and go through them to find the desired optima. COMP3910 Combinatorial Optimisation Understand how models can be formulated as combinatorial optimisation problems. Solve optimisation problems with linear programming techniques such as the simplex method and branch-and-bound. Appreciate the role of problem-specific heuristics in improving solution algorithms. COMP3631 COMP3771 Robotics User Adaptive Intelligent Systems You will gain experience and understanding of techniques for user modelling and their application areas to build user adaptive intelligent systems. You will apply human-computer interaction methodology to identify user needs, draw requirements, design, and evaluate user-adaptive systems and implement one or more recommender system techniques in a practical application. Year 4 (MEng) COMP5530M Group Project The Group Project provides an opportunity for you to work on a major computing project as part of a team. The project will further develop your team working/ project management skills and your technical knowledge and skills. COMP5221M Cloud Computing In this mobile you will learn about the key techniques and technologies that underpin cloud computing and look at the new directions that Cloud Computing is taking. You will have the opportunity to design the framework of Cloud architecture and will gain experience of using a range of middleware tools to implement a cloud application. COMP5911M Advance Software Engineering This module covers different approaches to the design and development of large software systems. You will study different design techniques and technologies that can be used to address issues of efficiency, modularity, security and maintainability. COMP5111M Big Data Systems The aim of the module is for students to develop a practical understanding of the methods, techniques and architectures required to build big data systems, so that knowledge may be extracted from large heterogeneous data sets COMP5930M Scientific Computation Understand the range of problems that can be formulated as nonlinear equation systems. Consider standard algorithms for these problems and the efficiency of their implementation. Demonstrate how state-of-the-art algorithms deliver gains in efficiency and allow the solution of large, sparse systems of nonlinear equations. COMP5940M Graph Theory: Structure and Algorithms This module introduces students to the main techniques and results from structural graph theory and considers their algorithmic applications. It covers classical results and more recent ones, and introduces current research techniques. COMP5880M Scientific Visualisation This module therefore covers both visual representation of data, but also systematic development of applications supporting scientific workflow using existing toolkits and libraries both at the small and the large scale. Material covered will include contours, isosurfaces, direct volume rendering, streamlines and other vector visualisations and topological analysis and visualisation, pipelined models of visualisation, modern visualisation toolkits and domain-based visualisation development.
COMP5860M Semantic Technologies and Applications The module covers both the architecture and key technologies of the Semantic Web. You will learn the principles of ontology engineering and use common Semantic Web tools to apply these technologies to a number of applications. COMP5621M COMP5622M Bio-computation Text analytics and natural language processing COMP5870M Image Analysis This module studies a selection of these techniques in depth. You will learn about the problems and solutions in particular application areas; how to evaluate the performance of the methods and to apply the theoretical knowledge gained to design image analysis systems for solving specific problems. COMP5830M Machine Learning and Knowledge Representation This module covers the fundamental principles of knowledge representation and machine learning. You will learn about some of key algorithms used in Automated Reasoning and Machine Learning and use software tools to compute inferences by Automated Reasoning and to build models from data using Machine Learning algorithms. This is an indicative list and actual content may vary as we regularly review the content or our courses in light of new experienc es and developments in the field.