Computer programming is a fundamental skill expected of all computing graduates. This module frames programming within the context of computational problem solving, introducing students to key foundational coding concepts and common data structures via Python. Understanding is driven by lab activities with an appropriate emphasis on basic mathematical skills of logic, probability, iteration, data presentation and data manipulation. The subject matter addressed in this module provides a firm foundation for modules taken later in the programme.
Organisations require skilled professionals to oversee the design and development of database management applications. This module introduces students to theoretical underpinnings of database management, database design, and the implementation of SQL statements to interact with a back-end database. Flexible and efficient storage and retrieval of large amounts of data are central to the functioning of modern information systems. This
module is devoted to the study of the design, construction, and use of such databases.
Computer-related professionals need to be aware of a wider range of issues that go beyond the mere technical knowledge necessary to practice their chosen discipline. They should have knowledge of government legislation affecting their work, along with a series of transferable skills that facilitate the successful completion of their course of study and the seeking of employment upon course completion
This module is designed to make future computing professionals aware of the nature of the professional working environment, as well as to increase students' awareness of the issues raised by the spread of computer and communication technologies into all aspects of life.
This module provides an introduction to the core areas of mathematics that form the foundation of computer science. The main areas of discrete mathematics are covered including logic, numbers, set theory, relations, matrices and probability. The use of discrete mathematics within different areas of computing is introduced. Successful completion of this module provides students with the mathematical skills they require in other modules.
Systems software and primarily the operating system of any machine mediate among application programs, utilities, and users, on the one hand, and the computer hardware on the other. To be an effective practitioner in the science requires an understanding of the concepts, structure, and mechanisms of systems software. This module presents a thorough discussion of the fundamentals of systems software design and relates these to contemporary design issues and to current commercial and research developments. The practical component addresses expertise using the command line and scripting in the Linux environment.
Client Side Development will equip students with practical software development skills to construct interactive, standards compliant, accessible and secure client-side systems for the Web. It will allow students to practice building well-formed web pages using HTML. The module will introduce appropriate ways to style the pages along with JavaScript to develop dynamic interactive client-side systems and forms a basis for data-driven websites.
Object-oriented programming (OOP) approaches are widely embedded within the IT industry and are therefore an essential skill expected of computing graduates. This module builds upon the concepts introduced in Software Development I and explores, in-depth, the fundamentals of object-oriented programming. A range of both theoretical and practical competencies, required for the successful design and implementation of software, including knowledge and understanding of algorithms and data structures, are presented. These programming concepts are interwoven within the development of practical skills in good programming practice, software design and testing methodologies. Students are also introduced to best-practice approaches for maintaining software security.
Computing systems are ubiquitous in both our work and personal lives. Reliance in society on computing systems can only be maintained through assurance of the integrity, sustainability, resilience and confidentiality of such systems. Consequently, the area of cyber security is a critical field with great relevance in computing and engineering.
This module engages students in security concerns and challenges in computing systems; covering security threats, attacks, risks and how to mitigate them. This is supported through a review of background concepts for security and the systems required to implement such measures. Further, it covers security architecture planning so that considerations for security risk assessment is taken into account and embedded in IT projects planning and management.
To enhance a student's ability to work as part of a software development team, and consequentially to enhance the student's employability. This will be realised by providing a contextualised theoretical grounding in contemporary software development methodologies that is set within the context of more traditional methodologies, related modern approaches and supporting practices. Moreover, students will have the opportunity to gain practical experience of applying core aspects of a selected contemporary software development methodology, towards the design and development planning relating to a representative real-world problem.
To be an effective practitioner in computing science requires an understanding of the concepts, structures and mechanisms critical to the design and implementation of computer networks. This module presents a thorough discussion of the fundamental principles and technologies underpinning the field of networking, covering concepts, terminology, layers, services, communications media and protocols used to transmit and share information over networks.
The industry requires robust, well-managed and relevant techniques in server-side web programming. This module will expand on students' knowledge and skills necessary for developing software systems to be deployed over the World Wide Web, with a specific focus on server-side technologies and techniques. Students will also be introduced to important design pattern considerations for web applications.
Full-Stack development is the phrase that has come to describe web developers who implement at all levels of the application; from the server-side business logic, through middleware that connects to other services such as databases; to the client side presentation and layout of the page delivered to the user. This module introduces the students to the foundational concepts of full-stack software development, and provides experience in designing, building and deploying such applications.
Contemporary software development and deployment practices have evolved from traditional ones, relying on a variety of novel technologies and concepts. Traditional server infrastructure is supplanted by services offered by dynamic hosting provided by cloud providers such as Amazon Web Services, Google Cloud Platform and Microsoft Azure. Typical services offered are extensive and typically include comprehensive functionality including: serverless execution models, compute services, hosted database instances, block/object storage, data lakes, static web hosting, Application Program Interface endpoint hosting, security services and identity management, dynamic content routing, machine learning and artificial intelligence services, and caching of content and computed outcomes.
Through these services, solutions built upon them may react, shrink and grow at scale and on demand whilst reducing overhead and costs. These modern operational practices have shown to increase solution quality with a greater responsiveness to customer needs. This modules serves as an introduction to these cloud platforms, related theory,their foundational concepts and operation models.
Students are required to undertake a major project during the final year of the course. This module allows a selected topic area and solution to be investigated in depth. Students will have the opportunity to integrate and apply learning from other modules in the course. The module runs during both semesters one and two and allows students to develop a comprehensive approach to all aspects of working on a large project, including: idea generation, problem specification, solution design and development, management and reporting throughout. The project also encourages an entrepreneurial mindset, which can influences the challenges undertaken and solutions produced in response. The module offers students an opportunity to develop a realistic and meaningful piece of work during their final year.
Computer Vision aims to give machines the capability to visually sense their environment, to interpret visual data, and understand their domain of application. Computer Vision involves the development of theory, algorithms, and devices for automatic extraction, analysis and understanding of useful information from a single image or a sequence of images (video). Computer Vision is a rapidly expanding science, with a vast range of applications in healthcare, industry, agriculture, transport, security and surveillance, enabled by technological developments in sensors, the Internet of Things, and Machine Learning.
Edge and embedded intelligence are at the intersection of embedded Machine Learning (ML) applications, algorithms, hardware, and software. It differs from other applications of machine learning (e.g., server and cloud) in that it requires not only expertise in software, but also knowledge of embedded hardware.
The module will focus on the basics of machine learning and deep learning, specifically for deployment in and embedded devices and systems, including microcontrollers and other constrained devices. Throughout the module, students will learn data science techniques for collecting data from sensor devices and develop an understanding of learning algorithms to train basic machine learning models which are optimised to run on resource constrained devices. At the end of this module, successful students will have a detailed understanding the principles behind embedded intelligence and the ability to develop and evaluate edge and embedded intelligence applications.
This is a growing area for both industry and academic research. The module is aligned well with the research interest of the Pervasive Computing Research Center, within the School of Computing. The module is also aligned with the School's MSc provision in AI (Artificial Intelligence) and IoT (Internet of Things). It is envisaged that the content of this module may provide an opportunity to highlight options for continued taught postgraduate study and research.
Optioned with EN
The ubiquitous use of Personal, Local, Wide Area Networks and Inter-networks and the move towards Cloud Computing and visualization requires the computing student to have an understanding of the underlying communication protocols and the issues involved in their management. In this module the emphasis will be on network planning, design and management. Issues such as performance, detection of faults, maintenance of security and management are examined and studied with the aid of protocol simulation tools. The understanding of such issues and appropriate network protection strategies are key to the meeting of business goals. Practical examples based on well-known platforms will be used to support delivery of academic material. Practical simulation will allow student to engage in deeper understanding of protocols.
Optioned with EEI
Students are required to undertake a major project during the final year of the course. This module allows a selected topic area and solution to be investigated in depth. Students will have the opportunity to integrate and apply learning from other modules in the course. The module runs during both semesters one and two and allows students to develop a comprehensive approach to all aspects of working on a large project, including: idea generation, problem specification, solution design and development, management and reporting throughout. The project also encourages an entrepreneurial mindset, which can influences the challenges undertaken and solutions produced in response. The module offers students an opportunity to develop a realistic and meaningful piece of work during their final year.