Computing and Communications
The following modules are available to incoming Study Abroad
students interested in Computing and Communications.
Alternatively you may return to the complete list of Study Abroad
Subject Areas.
SCC.111: Software Development
- Terms Taught: Full Year course
- US Credits: 5 Semester Credits
- ECTS Credits: 10 ECTS
- Pre-requisites: No pre-requisites
Course Description
Software now forms a central aspect of our lives. From the applications we run on our phones to the satellites in space, all modern technology is enabled by software. This module provides an introduction to the field of Software Development - the processes and skills associated with designing and constructing computer programs. Assuming no previous knowledge of the field, we study the contemporary knowledge, skills and techniques needed to develop high-quality computer software. This includes a thorough treatment of the principles of computer programming and how these principles can be applied using a range of contemporary and established languages such as Python, JavaScript and C. We discover how programming languages can be classified and how to choose the best language for the task at hand.
We also investigate and apply the practical Software Engineering skills needed to ensure software is correct, robust and maintainable. These include techniques for problem analysis, design formulation, programming conventions, software commenting and documentation, testing and test case design, debugging techniques and version control.
Educational Aims
This module aims to instil the knowledge, understanding and skills expected of a principled computer programmer. More specifically it aims to develop a coherent understanding of the principles and practice of imperative programming, the software development lifecycle and its associated tools and techniques.
Primarily, the module aims to introduce students to the universal skill of computational thinking (which encompasses abstraction, decomposition and indirection as key themes). This is a fundamental skill in computer science and is built on as students progress through later years of study. The module also exercises other widely applicable cognitive skills including applied problem solving, and an introduction to team working and project skills, placed in a discipline context.
Outline Syllabus
We study the contemporary knowledge, skills and techniques needed to develop high-quality computer software. This includes a thorough treatment of the principles of computer programming and how these principles can be applied using a range of contemporary and established languages such as Python, JavaScript and C. We discover how programming languages can be classified and how to choose the best language.
We also investigate and apply practical Software Engineering skills. These include techniques for problem analysis, design formulation, programming conventions,software commenting and documentation, testing and test case design, debugging techniques and version control.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.121: Fundamentals of Computer Science
- Terms Taught: Full Year course
- US Credits: 5 Semester Credits
- ECTS Credits: 10 ECTS
- Pre-requisites: No pre-requisites
Course Description
Computing and data drive many critical elements of modern society, directly or indirectly. It’s vital that there is a strong theoretical foundation to Computer Science. This module begins by examining the hard questions central to Computer Science and reasoning itself to prepare you for the in-depth critical thinking and discussion required at university level. It then proceeds to cover the fundamentals in logic, sets, and mathematics which have practical applications in software such as computer graphics. Algorithms, abstract data types, and analysis of algorithms is introduced to allow you to make reasoned decisions about the design of your programs. Finally, we investigate and apply the principles of Data Science and examine the way programs and systems can be designed to efficiently support work with data and question the limits of conclusions that can be drawn from such systems.
Educational Aims
This module is designed to instil the knowledge and understanding required to enable students to think deeply and rationally about problems that provide insight into the fundamental principles and limits of Computer Science and related mathematical concepts. These can be used to analyse and characterise the efficiency of algorithms, and to make the correct design choice to optimise efficiency when implementing computer programs. Building on this, it instils fundamental knowledge and understanding of the role and characteristics of data structures and the continuing importance of search and sort algorithms and their detailed operation and characteristics. Finally, Data Science principles and techniques are introduced and applied for the analysis of data.
This module fosters the development of a range of transferrable skills including applied problem solving, independent learning, and principled analysis of scenarios and arguments.
Outline Syllabus
This module begins by examining the questions and reasoning central to Computer Science. It then proceeds to cover the fundamentals in logic, sets, and mathematics of vectors, matrices, and linear algebra which have practical applications in software such as computer graphics. Algorithms, abstract data types, and analysis of algorithms is introduced. Finally, we investigate and apply the principles of Data Science to select, process, and analyse data, and examine the way programs and systems can be designed to efficiently support work with data.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.131: Digital Systems
- Terms Taught: Full Year course
- US Credits: 5 Semester Credits
- ECTS Credits: 10 ECTS
- Pre-requisites: No pre-requisites
Course Description
The creation of the microprocessor revolutionised global innovation and creativity. Without such hardware we would have no laptops, no smartphones, no tablets. Life changing technologies from MRI scanners to the Internet would simply not exist. This module provides an introduction to the field of Digital Systems – the engineering principles upon which all contemporary computer systems are based.
Educational Aims
This primary aim of this module is to demystify the operation of contemporary computers, such that students can begin to make reasoned judgements about the behaviour, capabilities and real-world limitations of computer systems. Furthermore, it aims to instil a basic understanding of computer architecture, data representation, operating systems concepts and how these relate to the underlying theoretical concepts of digital logic.
This module assists students in creating a cognitive model of a system – the seed of “systems thinking”. The development of abstract thought is encouraged through the use of computational models of real-world systems, reinforced through practical example and investigation. Applied numerical skills are also developed in the context of boolean logic.
Outline Syllabus
We study the elements that work together to form the architecture of digital computers, including computer processors, memory, data storage and input/output. We also unearth the ways in which these are enabled by digital logic – where George Boole’s theory of a binary based algebra meets electronics. Building on SCC.111 we also discover how the software programs we write translate to, and interact with, such hardware. Finally, we also study the effects of multi-process operating systems, and how these interplay with the capabilities and architecture of modern computers to optimise performance and robustness.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.141: Professionalism in Practice
- Terms Taught: Full Year course
- US Credits: 5 Semester Credits
- ECTS Credits: 10 ECTS
- Pre-requisites: No pre-requisites
Course Description
This module is designed to provide students with a strong foundation in principles of responsible computing, covering the legal, social, ethical and professional challenges that a practising computer scientist regularly faces. It is strongly research-led, delivered by staff actively researching these issues, and draws upon contemporary examples of where technology has resulted in both benefits and harm to people and society. We then develop an understanding of the legal frameworks, professional codes, working practices and civil licenses designed to protect from these harms. Particular emphasis is placed on considerations relating to the need for computer systems to be trusted and trustworthy.
Educational Aims
This module aims to develop a broad understanding of the societal, professional and legal implications of computing.Through a combination of lectures and small group tutorials, it aims to instil a deep sense of professional and ethical responsibility from the outset of the degree. The module also serves to meet the specific legal, social, ethical, professional expectations of professional societies and bodies in the UK.
This module aims to instil, within the context of computer science, a sense of social responsibility, and provide a forum through which active cross-cutting discussions can take place, with a focus upon the implications of design choices. It also aims to highlight the challenges and benefits of equality, diversity and inclusion in organisations.
Outline Syllabus
We discuss the use of participatory research methods in exposing real-world requirements for computing systems, and ensuring equitable distribution of benefits and harms of digital innovation across the population, in alignment with a changing legal landscape. Inclusive design practices through the development phases from research to implementation are reviewed, examining the prevalence and impact of the gender data gap, accessibility constraints and exploring the benefits of diversity in the workplace through real-world examples. We also discover ethical ways to practice personal and professional development for career progression.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.200: Group Project
- Terms Taught: Lent and Summer Term
- US Credits: 5 Semester Credits
- ECTS Credits: 10 ECTS
- Pre-requisites: Equivalent to SCC 111 Software Development
Course Description
The group project will give students experience in executing a project through all stages, working to the demands of a client, and practically combine and apply concepts and skills gained in other modules studied so far in their programme. Students will learn and apply their knowledge about prototyping, project planning, management, design,and user evaluation or testing strategies. Teams will deliver reports, code, and demonstrate a working system. They will also communicate their work through reports, demonstrations, presentations.
Educational Aims
This module aims to provide students an opportunity to develop their collaborative skills via a substantial “start-to-finish" group project, in topic areas such as desktop application programming, games, computer graphics applications, human-computer interaction, or mobile applications. Alongside their technical skills, they will also practice related project management skills such as planning, risk and cost management, scheduling, and conflict resolution. The module will also provide additional software development support to build student’s confidence in contributing to large, team-based codebases.
This module aims to equip students with the ability to work as a team: team interaction, coordinating work, and how to resolve problems and conflicts. Transferrable communications skills will include scheduling substantial independent work, problem solving, report writing, presentations, and demonstrations of their developed project.
Outline Syllabus
The actual project content may differ from year to year, and groups may be able to select projects aligned with the School’s main themes of Software, Systems, Data and Theory, Interactions and Implications, and Cyber Security ,although each theme may not be available every year. Example topic areas could be desktop application development, game programming, computer graphics, user interfaces, mobile computing, or other areas. The exact requirements of a group project will vary according to the focus of its theme however the course structure of a group project will be the same between themes and different years. Students will receive about 30 hours of workshop contact time throughout the module, in addition to lectures, and then will be expected to work independently as a group.
To support this practical activity, two strands of lectures are delivered. One covers programming and continues the development of the students practical programming skills to allow them to confidently contribute to larger, team-base programming projects. The second covers teamwork, project management, risks, and costings so that the student has a sound base for managing collaborative projects.
Assessment Proportions
Assessment: 100% Coursework
SCC.211: Software Design
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC 111 Software Development
Course Description
Software Development is a collaborative and professional process, requiring far more than a single individual undertaking programming activities. This module investigates the processes, tools, techniques and notations required to successfully undertake the development of commercial grade software.
Educational Aims
This module builds upon the foundations of software development provided by SCC.111, and aims to instil the additional knowledge and skills needed to write large scale software in commercial environments. More specifically, the module aims to develop an appreciation for the importance of non-functional parameters such as strong cohesion, loose coupling, scalability, extensibility, and the state of the art design patterns that achieving these in contemporary programming languages. The module also aims to introduce the industry standard notations and tools used to capture these design decisions.
The module aims to further practice students design and implementation skills, approach to systems thinking ,appreciation for professional conduct and general technical computing skills.
Outline Syllabus
This module investigates the processes, tools, techniques and notations required to successfully undertake the development of commercial grade software. Focussing on the key non-functional parameters of software reuse, scalability, maintainability and extensibility we explore the benefits brought by the rigour associated with Object Oriented, strongly typed languages (such as Java). We practice the concepts of composition, inheritance, polymorphism, interfaces and traits and the commonly employed design patterns that they enable. We also study the processes and notations associated with defining the relationship and behaviour of complex computer software systems.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.212: Advanced Programming
- Terms Taught: Lent / Summer Terms only
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC211 Software Design.
Course Description
This module provides broader exposure to alternative programming language paradigms beyond imperative and object oriented programming. Particular emphasis is given to functional programming languages, and their unique constraints and features. We also explore why functional languages bring about increased reliability and scalability, and how they are now experiencing a resurgence within the software industry and we see how functional programming concepts are being integrated in mainstream programming languages.
Educational Aims
This module aims to provide a coherent introduction to functional programming, and its contemporary application. The underlying implications of total immutability are discussed, along with the benefits this brings to programming language expressivity, determinism, scalability, concurrency and data parallelism (complementing the systems focus of SCC.232). Furthermore, it aims to demonstrate through practical experience the more pragmatic approaches adopted by modern programming over more conservative, classical functional programming languages.
The module aims to further practice students design and implementation skills, technical computing skills, computation thinking concepts, and applied numerical skills.
Outline Syllabus
We investigate how introducing the concept of absolute immutability into programming languages enables a suite of expressive mechanisms within programming languages including pure functions, lambdas, higher order functions, pattern matching, currying, map/reduce and pattern matching. We also explore why functional languages bring about increased reliability and scalability. Finally, through hands on laboratory sessions, we see how functional programming concepts are being integrated in mainstream programming languages such as Java, Python and JavaScript, to create versatile multi-paradigm programming environments.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.213: Internet Applications
- Terms Taught: Lent / Summer Terms Only
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC 111 Software Development.
Course Description
The internet and the world wide web has now pervaded every aspect of our lives, from e-commerce and entertainment to logistics and social media. Increasingly, application software is no longer written for specific devices, but for internet web browsers - the internet has replaced operating systems as the de facto platform for application development, making an already global phenomenon truly ubiquitous.
Educational Aims
This module aims to demystify the structure of internet applications, and to introduce the technologies and processes used in their construction and deployment. It also aims to convey the scalability, performance implications and privacy risks associated with the design choices in the field.
The module aims to further practice students design and implementation skills, technical computing skills, computation thinking concepts, and applied numerical skills.
Outline Syllabus
This module studies the various approaches to internet applications development, investigating both the client side and server side approaches, discussing the trade-off of performance, scalability, privacy and trust associated with these approaches. We also review the role of “cloud infrastructures” (federated distributed computation) in the provision and management of internet applications. Through interactive lectures and small group practical sessions we study common frameworks for client-side application development and create and deploy an internet application from first principles.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.221: Data Engineering
- Terms Taught: Michaelmas Term only
- US Credits:
4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC.121 Fundamentals of Computer Science
Course Description
This module builds upon previous knowledge by providing a theoretical background to the design, implementation and use of database management systems, both for data designers and application developers. It incorporates consideration of information quality and security in the design, development and use of database systems.
Educational Aims
This course aims to instruct students in the ways of analysing data requirements and producing a model which captures those requirements, and transform that model into one suitable for use in a Relational DBMS. The theory and practice of the World’s de facto standard, the Relational Model and Relational DBMS will be examined together with recently emerging paradigms like NoSQL and “Big Data”. Contemporarily relevant issues of security related to the design, development and use of database systems will be covered. These data storage systems will be examined from the inside, such as the physical layout of data and associated access methods to allow efficient response to data requests, and from the outside, such as the problems raised by transaction processing and concurrency control, and the solutions. Overall, it seeks to give students a broad range of knowledge and skills necessary for a career in data and database engineering at a professional level.Outline Syllabus
The module includes a brief history of the database management systems, Entity-Relationship Models, the relational model and the data normalisation process, and alternative schema definitions, NoSQL and Object Oriented data models, big data, as well as transaction processing and concurrency control. The module embeds practical access and retrieval considerations and how to interact with databases from a number of programming languages.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.222: Artificial Intelligence Concepts
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.121 Fundamentals of Computer Science
Course Description
This module introduces the key ideas and fundamental principles of artificial intelligence (AI) and the types of problems that can be addressed by AI. We introduce the core concepts and philosophy of AI, including its history and definitions, classify the various approaches to AI, and discuss its presence in the modern world alongside its ethical considerations.
Educational Aims
This module aims to provide the common grounding in Artificial Intelligence required to support the essential range of final year courses that form part of the Data Science programmes. It also serves to provide a solid academic base for students wishing only to develop a core awareness of the area. Classical and contemporary approached to AI are discussed, classified and placed in context alongside ethical consideration through a blend of lecture and practical labs.
The module aims to further practice students’ technical computing skills, computation thinking concepts, and applied numerical skills. Professional and ethical considerations are also practiced.
Outline Syllabus
This module introduces the key ideas and fundamental principles of artificial intelligence (AI). We unearth the underlying principles of search spaces, knowledge representation and inference logic that form the core of rule based systems. We discover the principles of machine learning, emphasising clustering (e.g. k-means), classification (e.g. k-nearest neighbour) algorithms, linear regression and neural networks. This deep dive provides the essential grounding necessary to progress to modules in topics such as Machine Learning, Computer Vision and Natural Language Processing.
Assessment Proportions
Coursework: 70%
Exam: 30%
SCC.223: Algorithms
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.121 Fundamentals of Computer Science.
Course Description
In this module we build upon the foundations of algorithms and their complexity to develop a deeper understanding of algorithmic approaches to computational problem solving. These theoretical aspects are grounded through practical work in the lab and placed in the context of case studies of extreme scale and embarrassingly parallel computing, derived from real-world problem domains introduced by invited speakers where possible. Finally, we explore key implications of algorithm performance including their impact on energy efficiency and sustainability to provide a coherent interface with other modules.
Educational Aims
This module aims to develop the knowledge and skills necessary to solve more complex computational problems algorithmically. The module also aims to enable students to approach problems systematically and make good and well-reasoned choices as to effective algorithmic approaches for solving them efficiently, considering the real-world implications of their solution.
This module aims to further develop applied problem solving, independent learning, computational thinking and science and analysis skills.
Outline Syllabus
In this module we explore computational complexity theory, which allows us to consider the very nature of computability – including non-deterministic polynomial (NP) complexity classes such as NP-hard, NP-complete and the classes of problems which cannot be solved. We discuss classical approaches to problem solving such as divide and conquer, recursion and parallel approaches, emphasizing their relative benefits and weakness to different classes of problem. We study advanced data structures in depth, such as tries, heaps, suffix arrays, k-d trees and distributed hash tables. We also explore the approaches for their efficient construction and use.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.231: Computer Networks and Systems
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC.131 Digital Systems.
Course Description
This module investigates the deeper concepts that underpin computer networking and operating systems. We explore the role, operation and design rationale of the IP protocol suite –which enables the global internet.
Educational Aims
This module aims to instil a deep understanding of how computer operating systems and networks interact to enable the Internet applications and services that are ubiquitous in the world today. More specifically, to convey the knowledge and practical experience of internet architecture, network protocols and operating system principles expected of all computer science graduates. The module also aims to highlight the efficiencies that can be gained from sharing physical resource amongst many competing processes, and the ways in which systems resolve that contention for shared resources such as network bandwidth, CPU and memory availability. Finally, it also aims to provide solid foundations upon which future study of SCC.233 Advanced Operating Systems, SCC.213 Internet Applications and SCC.331 Distributed Systems are built.
This module seeks to deepen and begin to formalize the cognitive skills of abstraction through the use of layered reference models. It also aims to introduce students to the key concepts of virtualization and simulation. Applied numerical skills are also developed in the context of empirical performance measurement.
Outline Syllabus
Taking a top-down approach, we discover how protocols such as HTTP, DNS and TCP/IP operate on a fundamental level, the metrics and tools we use to evaluate the performance of computer networks. Through the use of laboratory-based simulators, we also explore first-hand how routing protocols ensure user data is efficiently and safely routed across the global internet. We also study the interface between computer networks and operating systems, and how the concept of virtualization has transformed the way computer systems and networks efficiently make use of their hardware resources.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.232: Concurrent and Parallel Systems
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.231 Computer Networks and Systems.
Course Description
Computer architecture has now reached a critical juncture where we are witnessing a step change in computer performance – not due to the increased performance of individual processors, but through the inclusion of many, sometimes even thousands, of processor cores in a single computer.
Educational Aims
This module aims to develop an understanding of alternative multiprocessor architectures, how they are classified, the scalability of their performance characteristics, the factors which can bound that performance and how to mitigate them. The module also aims to provide the necessary grounding in theory and practice that enable the creation of high performance yet safe applications that make use of fine grained concurrency, instruction parallelism and data parallelism.
This module aims to further develop students’ applied programming skills and the cognitive skills of computational thinking. It also aims to develop the students confidence in interpreting detailed technical documentation, and measuring and analysing systems.Outline Syllabus
In this module we classify the different designs of multi-processor computers such as symmetric CPUs and general purpose GPUs. We investigate their benefits and drawbacks, and study the theories and factors that can all too easily bound their seemingly limitless computational potential. Through a combination of lab exercises and lectures we discover how to use contemporary software tools and techniques to create high performance applications that exploit multi-threaded instruction parallelism whilst avoiding race conditions, deadlock and livelock, and utilise GPUs to exploit data parallelism.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.233: Operating Systems
- Terms Taught: Lent term only
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.231 Computer Networks and Systems.
Course Description
This module provides a deep dive into the theory and practical application of advanced operating systems (OS) and associated hardware concepts. Through a combination of lab exercises and lectures, we investigate the ways that modern operating systems are optimized to extract the maximum performance and efficiency from 21st century computer hardware.
Educational Aims
This module aims to introduce performance and fairness as key (and often competing) requirements in systems software design. This module aims to deepen students’ understanding of the theories and designs that impact the performance of complex computer systems. The modules seek to instil a thorough understanding of how design decision made by operating systems greatly impact upon performance and the ways in which this can be measured and mitigated.
This module aims to further develop students’ applied programming skills and the cognitive skills of computational thinking. It also aims to develop the students’ confidence in interpreting detailed technical documentation and measuring and analysing systems.
Outline Syllabus
We study how the fundamental concept of virtualisation enables safe, efficient and fair sharing of memory and processor resources across multiple applications and services. We investigate the structure, operation and scalability of OS subsystems, such as memory allocators and file systems. We discuss the performance implications of operating systems and discover how performance can be maintained even in the presence of relatively low performance input/output. We explore how symmetric multi-processors can be used transparently to optimize the performance of a computer, the implications this has for system software, and how and why the effective application of caching policies and temporal/spatial locality greatly affect the performance of a system.
Assessment Proportions
- Coursework: 30%
- Exam: 70%
SCC.241: Human-Computer Interaction
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: No pre-requisites
Course Description
Most computing systems are interactive and have people in the loop. Human-computer interaction (HCI) is concerned with all aspects of designing, building, evaluating and studying systems that involve human interaction. From a computing perspective, we focus on enabling interaction through user interfaces, and on creating interactive systems that are usable and provide a good user experience.
Educational Aims
This module aims to provide a coherent understanding of the importance of including human and social factors in the design process, the methods through which this can be accomplished. Evaluation of software and systems from a human perspective is also discussed in both lectures and hands-on small group reinforcement sessions.
The module aims to further practice the commonly used software skills, design skills, communications skills ethical and professional issues (particularly related to observation and interviews).
Outline Syllabus
The module introduces students to the foundations of HCI in understanding human behaviour, technologies for interaction, and human-centred design. We review human perception, cognition and action and relate these to design principles and guidelines; discuss different user interface paradigms and key technologies such as pointing; and introduce practical methods for design and evaluation with users.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.242: Extended Reality
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.241 Human-Computer Interaction.
Course Description
This module aims to introduce the concept of Extended Reality – the academic term for all technologies that augment human’s senses with digital technology. Addressing the rigorous science and engineering underpinnings of what is colloquially known as the “metaverse”, this module aims to provide a lucid understanding of the workings of those technologies, the tools used to general interactive content, the modes of user interaction associated with these technologies. A treatment of the ethical implications of this technology is also instilled.
Educational Aims
On successful completion of this module students will be able to• Describe the challenges and potential solutions related to creating XR systems.• Formulate the design of an XR experience through an informed choice of interaction technology to extend and augment the desired sensory channels.• Demonstrate rapid prototyping and construct an XR implementation from a given design.• Assess the usability and socio-ethical impact of XR applications through relevant measures and lenses.Outline Syllabus
Extended reality (XR) refers to the interactive technologies that blend the virtual and physical worlds together into a hybrid environment or an immersive experience. The technology is based on multi-modal platforms that integrate use of ubiquitous, pervasive, wearable and omnipresent computing. We situate XR's different offerings within Milgram's continuum and identify the needs and means of augmenting the human sensory channels. The computing perspective takes an applied approach to design, implementation, deployment, and evaluation of systems that are used to create an XR environment and deliver an immersive experience. Latest trends in research, emerging technologies and novel tools will be discussed with an analytical focus on the technology and the socio-ethical implications of widespread prevalence of the technology.
Assessment Proportions
Regular formative assessment that occurs throughout the module via laboratories, workshops, tutorials or supervision meetings. This regularly challenges the student in a supportive, low stress environment and allows them to evaluate their own progress based on feedback from trained SCC staff. A unified summative coursework assessment allows students to demonstrate their cognitive and practical skills in the topic area over an extended period of work. A summative online quiz also provides the opportunity to assess students’ knowledge and cognitive skills in a broad range of learning outcomes. A final summative examination assesses students’ ability to demonstrate knowledge based outcomes and to interpret, analyse and solve problems under controlled conditions.
SCC.243: Sustainable Computing
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: No pre-requisites.
Course Description
Computing plays a pivotal role in addressing growing energy costs, greenhouse emissions, and the climate crisis. Whilst we can use computing and its associated digital technologies to shape a greener society (as well as create more energy-efficient software and hardware), there exist important trade-offs with respect to economic cost, engineering effort, and environmental impact.
Educational Aims
Although considered clean in its nature, the environmental cost of Information Technology cannot be ignored. It is estimated that the energy usage and carbon emissions of IT globally is roughly equal to a mid-sized full developed country. This module aims to instil the sense of responsibility, such that the environmental impact of future software and systems can be minimized. A treatment of both social, environmental, and practical technical aspects for impact mitigation are discussed.
The module also aims to broaden and practice ethical and professional issues associated with the Computer Science discipline, and apply scientific measurement and analysis skills.Outline Syllabus
In this module we explore key concepts associated with creating sustainable computing, spanning from how a processor uses electricity to how computers shape a greener economy and society. We study the methods to create more energy-efficient code, energy-aware device mechanisms, as well as the benefits and drawbacks of computing and digital technology with respect to its impacts upon the environment and economy.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.252: Secure Cyber Systems
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.131 Digital Systems.
Course Description
Cyber Security is now considered a critical aspect of any computer system. This module aims to provide a coherent understanding of the fundamental risks and mitigation that can be applied to computer systems that meet the expectations of the relevant professional and regulatory bodies in the UK and beyond.
Educational Aims
Cyber Security is now considered a critical aspect of any computer system. This module aims to provide a coherent understanding of the fundamental risks and mitigation that can be applied to computer systems that meet the expectations of the relevant professional and regulatory bodies in the UK and beyond. The module also aims to develop students professional practice, general numerical and computational thinking skills.
Outline Syllabus
The module will provide information on Authentication, Authorisation & Accountability (AAA) and its building blocks. An emphasis will be given on authorisation, where access control models, policies and mechanisms will be examined. Main categories of existing cryptosystems (e.g. symmetric, asymmetric) will be reviewed to understand their use and offered security properties (e.g. confidentiality, integrity, non-repudiation) in practice. Operating systems security and network security concepts will be discussed, with connection to AAA and cryptosystems. An introduction to formal verification will discuss techniques that can be used to verify properties on cyber security systems. Example models of systems specified along with appropriate properties will be verified to assess their correctness.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.253: Applied Security Methods
- Terms Taught: Lent term only.
- US Credits: 3 Semester Credits
- ECTS Credits: 5 ECTS
- Pre-requisites: Equivalent to SCC.252 Secure Cyber Systems.
Course Description
This module explores some of the practical and applied aspects of cyber security: Penetration Testing and Forensics.
Educational Aims
The core aim of this module is to introduce students to the world of attackers and defenders within the digital environment. As such it primes the student with the main concepts, definitions and tools of the attacker and forensic analyst and to provide the necessary background to conduct both attacks (as would be found in agreed penetration tests) and forensic investigations. We consider the legal, regulatory and ethical frameworks which cover penetration testing, cyber attacks and digital forensics, while developing practical skills associated with conducting penetration testing and forensics.Outline Syllabus
In this module we discuss common approaches and tools that attackers use to undermine the security of digital systems and gain first-hand experience of the weaknesses that can be present in real-world systems through guided work in highly controlled, small-group practical labs. We then explore ways in which these attacks can be identified, how the digital traces of an attack be captured, appropriately evidenced and then interpreted at a later date. The module will wrap the technical and theoretical aspects within the legal, regulatory and ethical frameworks for the appropriate application of ethical penetration testing.
Assessment Proportions
Coursework: 30%
Exam: 70%
SCC.311: Distributed Systems
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC 203 Computer Networks and SCC 211 Operating Systems.
Course Description
This module aims to provide an understanding of the fundamental principles underpinning modern distributed systems including the client-server model, RPC/ RMI, clock synchronisation, and supplement this with studies of practical tools and techniques currently available in distributed programming, focusing in particular Java RMI and associated Java-based software. It also aims to introduce and discuss key non-functional properties such as scalability, dependability and security, and provide an insight into current research issues in the distributed systems community.
Educational Aims
At the end of the course the students should:
- Have a strong understanding of what is meant by a distributed system, why people are developing such systems, and what are their potential problems;
- Understand the client-server paradigm and the role of middleware technology and be able to relate these to the concepts introduced in the practical stream;
- Have a good understanding of RPC, its role in middleware, issues in its design (e.g. transparency), and how it is implemented;
- Be able to compare the RPC service with alternatives such as publish-subscribe or distributed shared memory;
- Understand the principles of clock synchronisation and also group communication in distributed systems and why these are fundamental underlying services;
- Understand the importance of scalability in distributed systems and also core techniques to build scalable services;
- Be able to appreciate the security vulnerabilities in a modern distributed system, and general security principles to address such threats including cryptography and access control (with special focus on Kerberos);
- Understand the principles and protocols underlying dependable distributed computing including replication and consistency;
- Be able to develop relatively complex distributed systems using Java RMI;
- Be aware of and able to use added value software such as JMS, Jini and EJB (Enterprise Java Beans);
- Have an awareness of the new developments in the field of distributed systems.
Outline Syllabus
The lecture stream introduces fundamental principles that underpin modern distributed systems. This consists of 20 hours of lectures covering the following topics:
- Introduction to distributed systems;
- Key underlying mechanisms: remote invocation (RPC/ RMI), indirect communication, clocks and synchronisation, group communication);
- Non-functional aspects in distributed systems: scalability, fault-tolerance and dependability, security;
- Applications and services: distributed file systems, Google infrastructure.
The practical stream in contrast covers both the practical development of distributed systems using Java RMI and J2EE and also associated tools and techniques that can be employed. This consists of 10 hours of lectures as follows:
- Introduction to Java RMI;
- Distributed systems design, security and Java RMI, the Java Messaging Service, Java Groups, Aspect J and distributed programming, resource discovery using Jini, component architectures including Fractal and Enterprise Java Beans (EJB).
Assessment Proportions
- Coursework: 40%
- Exam: 60%
SCC.312: Languages and Compilation
- Terms Taught: Lent / Summer Terms only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC 120 Fundamentals of Computer Science.
Course Description
This module will introduce students to the theory of formal languages, and how it relates to programming languages. They will study the relationship between formal languages and abstract machines, and how it relates to compilation. It will give students a basic understanding of the compilation process for a high-level programming language, both analysis (lexical, syntactic and semantic) and synthesis.
Educational Aims
This module aims:
- To introduce students to the theory of formal languages, and how it relates to programming languages.
- To study the relationship between formal languages and abstract machines, and how it relates to compilation.
- To give students a basic understanding of the compilation process for a high-level programming language, both analysis (lexical, syntactic and semantic) and synthesis.
Outline Syllabus
The first half of the course will introduce formal languages and will include an introduction to:
- Syntax and semantics, phrase structure grammars and the Chomsky Hierarchy as well as processes such as derivation and parsing.
- Highlight grammar equivalence and ambiguity in Context Free grammars and its implications.
- The relationship between languages and abstract machines will be explored.
- The concept of computation will be presented alongside Turing's thesis, alternative models of computation (functional languages, etc) and applications of abstract machine representations.
The second half of the course will provide an introduction to the compilation process including:
- Lexical analysis and syntactic analysis, recursive descent and SLR techniques.
- Tools such as JLex and CUP will be presented.
- Semantic analysis and the symbol table which will lead into the synthesis phase: intermediate representations, target languages and structures and finally code generation.
Assessment Proportions
- Coursework: 40%
- Exam: 60%
SCC.360: Computer Science Seminars
- Terms Taught: Lent / Summer Terms only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC205 Professional Issues and Research Methods.
Course Description
Within this course you will be exposed to a small number (two to three) of current computer science related topics from different subject areas. These areas will be introduced through a lecture covering the general aspects of the area. However, the main topical exposure will happen through seminar style in-depth study of specific parts of the subject area, which includes guided reading, a written seminar essay, presentation of the results in plenary and a discussion of the findings within the seminar group. Through this you will further deepen your skills in carrying out research, present your work in written, graphical and verbal form (which is related to SCC 205 Professional Skills and Research Methods) and discuss the research work with experts and peers.
Educational Aims
This module aims to:
- Enable students to do independent and in-depth research into an advanced topic of computing or communications reflecting current topical and research issues;
- Enable students to apply research skills to specific subject areas, present the results of their finding in front of a peer group and supervisor, and lead a guided discussion on their chosen subject area;
- Familiarise students with a variety of current and topical areas in computer science and communications that provide an additional and more in-depth perspective on subject areas taught throughout second and third year.
Outline Syllabus
The subject areas contributing to these seminars will come from SCC’s different thematic (research) strands and include (but are not limited to):
- Natural Language Engineering
- Policy Based Network Resilience
- Eye-tracking for Ubiquitous Computing Applications
- Energy Aware Control and Sensing in Home Environments
These topics will change in order to reflect a full spectrum of the School’s interests and also to keep the seminars current, providing a sound basis for up-to-date topical discussion
Assessment Proportions
- Coursework: 60%
- Exam: 40%
SCC.361: Artificial Intelligence
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC 110 Software Development.
Course Description
This module aims to give students a broad grounding in artificial intelligence including knowledge and understanding of reasoning, decision making, fuzzy logic, neural networks, and genetic algorithms and the skills to implement artificial intelligent systems. The understanding gained through the module should give the students an appreciation of the challenges in this area. Furthermore, the module will prepare students to understand and critically analyse artificial intelligence techniques used in modern computers and mobile devices.
Educational Aims
At the end of the module the students should be able to:
- Understand fundamental Artificial Intelligence concepts and current trends and issues;
- Understand and apply a range of artificial intelligence techniques including neural networks, fuzzy logic-based reasoning, genetic algorithms, search and planning;
- Know of applications of artificial intelligence to intelligent systems;
- Recognise computational problems suited to an intelligent solution and design intelligent systems;Apply the above techniques to analyse and design intelligent systems.
Outline Syllabus
- Introduction to Artificial Intelligence, including a historical background;
- Knowledge Representation and Reasoning: Predicate logic and logical inference, Knowledge based systems, Intelligent Systems, operations over fuzzy sets, fuzzy sets, fuzzy models (Mamdani and Takagi-Sugeno type), fuzzy inference;
- Searching and planning, Decision Making (DM), DM under uncertainties
- Probability theory: Bayesian Decision Theory. Probabilistic inference, Bayes networks;
- Machine Learning: Supervised and unsupervised learning – principles of learning, learning a class from examples, definition and levels of autonomy, generalisation, over-fitting, regularisation, statistical, probabilistic and rule-based methods. Introduction to Neural Networks and Decision Trees.
- Introduction to Multivariate Methods and Clustering and Classification approaches.
- Introduction to evolutionary algorithms, genetic algorithms, phenotype, genotype, basic genetic operators
- Introduction to programming languages suitable for intelligent systems (e.g. Scheme, Prolog)
- Applications of Artificial Intelligence
Assessment Proportions
- Coursework: 40%
- Exam: 60%
SCC.365: Advanced Networking
- Terms Taught: Lent / Summer Terms only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: Equivalent to SCC 203 Computer Networks.
Course Description
This course will build upon the fundamental concepts introduced in SCC 203 Networking, introducing a series of advanced topics in the networking domain. It will:
- Enhance the students knowledge by adding detail on advanced topics to their existing fundamental knowledge of computer networking
- Enable the students to understand how the Internet is structured in practice, and how different levels of service can be provided
- Allow the students to explore a number of the themes within the module from a practical perspective
- Provide students with a detailed understanding of a number of current advanced research topics in the field
- Give students an insight into industry perspectives on networking
Educational Aims
On successful completion of this module students will be able to:
- Demonstrate a deep understanding of advanced concepts that underpin the Internet
- Describe and critically evaluate a number of core protocols and techniques used within communications networks
- Implement a basic network topology, and support measurement and packet analysis techniques using network emulation mechanisms
- Understand and appreciate a number of cutting edge research and industry topics within the networking domain
Outline Syllabus
This module will build upon the fundamental concepts introduced in Networking (SCC.203), introducing a series of advanced topics in the networking domain. The module is divided into 3 themes: Core topics that will reinforce the fundamentals gained in SCC.203, Practicals that will provide enhanced “hands-on” experience, and Research and Industry that will cover a range of topics that can be considered more current and advanced.
The Core theme will begin by looking at how networks are actually topologically constructed, in order to support customers’ service requirements. It will then broadly study the elements of a router that will enable the support of multiple classes of service, bandwidth and delay guarantees etc… From that point, the module will then focus on five key areas of advanced networking:
- Bridging, layer-2 networks, source routing, transparent bridging
- Switching, switch fabrics, input and output buffering, HOL blocking, LAN switching
- Queuing, exploring techniques such as tail drop, Weighted Fair Queuing, Random Early Detection
- Security, including types of attack (e.g. DoS, DDoS) and techniques to support security (e.g. IPSec, TLS)
- Multicast, looking at the key elements and advantages/drawbacks of IP multicast, application layer multicast, etc.
The Practical theme will ensure a practical element to the module, looking broadly at the themes of Protocol Design and Network Emulation. The former theme will look at protocol specification, standardisation, implementation and testing from the perspective of gaining hands on experience. The latter theme will look at the configuration and management of virtual network topologies to enable hands on experience of network measurement and packet analysis.
The Research and Industry theme will provide a number of sessions that are based either on cutting edge research in the field, or on giving an industry perspective on current and future directions in networking. Given the nature of this theme, the topics covered here are likely to change year on year.
Assessment Proportions
- Coursework: 40%
- Exam: 60%
SCC.366: Media Coding & Processing
- Terms Taught: Michaelmas Term only
- US Credits: 4 Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites: No pre-requisites
Course Description
This course aims to introduce you to the concepts of media coding and compression and media processing. It will cover the basics of human perceptions over media presentation, coding and digitisation, compression, and advanced media processing. The course also covers these aspects for audio and video. Topics include: human perception, representation of media and coding; media compression and compression standards; image processing; video processing.
Educational Aims
- Introduce students to multimedia systems, coding, digitisation, compression and advanced digital processing techniques applied to image, speech, audio and video coding
- Enable students to understand the content processing methods and the mathematical interpretation of image, audio, and video processing methods.
- Emphasise from a system’s point of view on speech production, speech synthesis and low bit rate coding, waveform coding and up-to-date speech coders used in mobile and satellite communication systems.
- Familiarise students with practical implementations in computer vision methods used in medical, surveillance and other applications.
- Provide students with a broad range of knowledge and skills necessary for a career in computer science and engineering at a professional level.
Outline Syllabus
The following areas are covered:
- Human Perception – basics of human hearing and vision, different audio and visual effects
- Representation of Media & Coding–analogue audio formats, analogue digital conversion, types of speech coding systems; digital audio formats, monochrome image format, colour coding, pixels, grey scales, image resolution, component coding, coding redundancy, interpixel redundancy, psychoacoustic models, psychovisual redundancy, fidelity criteria, etc.
- Media Compression & Compression Standards– image compression models; error-free compression, variable length coding, bit-plane coding, lossless predictive coding; lossy compression, lossy predictive coding, transform coding; image compression JPEG, MPEG, audio compression techniques (e.g. MUSICAM. ASPEC), MP3 and other MPEG audio standards.
- Image Processing - Image enhancement and restoration: histogram manipulation, grey level equalisation, thresholding, noise reduction by averaging, low and high pass spatial filters, linear and non-linear spatial filters, frequency domain processing, image compositing. Image analysis: segmentation, pattern recognition, texture selection, measuring shapes, object classification and object recognition. Image synthesis.
- Video Processing – basic parameters for video analysis, cut detection (histogram based, edge change ratio, sum of absolute differences), face recognition, object recognition in video, deriving simple video semantics, content repurposing 4.2.
Assessment Proportions
- Coursework: 40%
- Exam: 60%
SCC.400: Research Methods
- Terms Taught: Michaelmas Term only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a computing-related area in their home institution.
- Special circumstances only. Not open for normal applications from external students.
Course Description
Students will gain a formal understanding of research and will develop the ability to critically reflect on research approaches and practices in the field of computing. Research Methods will also encourage an appreciation of the different ways that other disciplines, academic communities and industries all conduct research. There will be an opportunity to plan a research project and develop a convincing study design to address a challenge or problem. This module explores ethical and data management issues associated with research as well as research and innovation practices in industry.
The module covers the fundamentals of research such as sampling and design, before considering strategies and research methods. Furthermore, the module offers greater insight into research design, such as how to structure and frame research studies, choosing a research strategy and selecting the best research method. Students will learn about ethical issues in research and approval processes before understanding the opportunities and expectations from their industrial placements.
Educational Aims
On successful completion of this module students will be able to:
- Understand different ways of doing research in different disciplines and in industrial RD projects.
- Develop research and project proposals, and to choose and justify appropriate research methods.
- Conduct effective literature reviews, and to critically analyse literature.
- Understand the requirement for engineering activities to identify and manage cost drivers, in the context of research and innovation.
- Appreciate working practices in industry and enter the workplace with sufficient awareness of professional practice.
Outline Syllabus
- Introduction to research: motivations, methods, outcomes of research.
- Fundamentals of research: the language of research; sampling, design, measurement, analysis; understanding validity.
- Research methods: surveys; experiments; case studies; ethnography; design research
- Research design: framing and structuring research studies; formulating problems, aims, and research questions; choosing a research strategy; selecting methods for data generation and data analysis.
- Literature work: what is "The Literature"; scientific writing; processes of scientific publication and peer review; purposes and types of literature review; searching literature; critically analysing literature.
- Research ethics: ethical issues in research; ethical analysis; ethics approval processes; what is research data; research data management.
- Fundamentals of data science
- Engagement with industry: professionalism, communication, and management of placements
Assessment Proportions
SCC.401-CS: Elements of Distributed Systems
- Terms Taught: Michaelmas Term only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a Computing related area in their home institution.
- Special circumstances only. Not open for normal applications from external students.
Course Description
This module will equip students with the ability to develop and apply an understanding of fundamental principles, techniques and technologies that underpin today's global IT infrastructure. Students will learn to assess new systems technologies, to know where technologies fit in a comprehensive schema, and to know what to read in order to develop a deeper level of understanding.
Students will focus on the properties of system components, and will become familiar with the strengths, weaknesses, scalability and bottlenecks of systems components, with the aim to make intelligent and well-reasoned trade-offs between fundamental building blocks of distributed systems in today's IT infrastructure. The techniques and principles element of the module addresses caching, tiering, replication, synchronisation, failure and reliability, whilst the technologies section covers topics such as interaction paradigms in distributed systems, peer-to-peer architecture and scalable and high-performance networking.
Educational Aims
The module aims to:
- Help students critically evaluate technical ideas and mechanisms for realising large scale and high performance systems
- Improve confidence in reading and understanding research literature
- Provide experience in analysing and reflecting on the fundamental elements in enterprise IT systems and the trade-offs involved
- Enhance independent research skills
- Expose students to problem-solving and investigative techniques
- Improve understanding from a real-world perspective
Outline Syllabus
In this module we explore the fundamental principles, techniques and technologies that underpin today's global IT infrastructure.
The principal ethos of the module is to focus on the properties of system components, with the aim of encouraging a principled understanding of the strengths, weaknesses, scalability and bottlenecks of systems components. This will enable graduates of the MSc to be able to make intelligent and well-reasoned trade-offs between fundamental building blocks of distributed systems in today's IT infrastructure.
Further, the course will review state of the art thinking regarding algorithms, and technologies behind such architectures, placing these within the framework of the current research agenda.
The module will cover two key areas: fundamental techniques/ principles and fundamental technologies/ paradigms.
Fundamental techniques/ principles will include coverage of the following:
- Caching
- Tiering
- Replication
- Synchronization
- Failure
- Reliability
Fundamental technologies/ paradigms will include coverage of the following:
- Interaction paradigms in distributed systems
- Peer-to-peer architecture
- Scalable and high-performance networking
- Scalable and enterprise storage
- Data acquisition (e.g. sensor networks)
- Enterprise computing and scalable processing
- Large scale distributed information systems (e.g. high-performance web architectures)
- High performance compute clusters, grid architectures
- Enterprise security
- Organisational impacts (e.g. data protection, security)
Assessment Proportions
SCC.402: Innovations in Interactive Computing
- Terms Taught: Michaelmas Term only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a computing-related area in their home institution.
- Special circumstances only. Not open for normal applications from external students.
Course Description
Explore advanced topics in experimental Human-Computer Interaction (HCI), such as understanding users and their requirements, investigating design spaces and prototyping and developing innovative interaction techniques. The module offers increased experience in HCI literature and design methods both with and without users, as well as practical experience of using supporting tools. Students will learn about modelling techniques and design space techniques as part of the module.
Upon completion of the module, students will have the knowledge to conduct experimental HCI research and have the motivation, experience and tools for understanding users and their requirements for interaction. The module helps to develop scientific writing skills and analytical thinking and prepares students for further postgraduate study, or for a successful career in IT or computing.
Educational Aims
This module aims to:
- Provide students with the knowledge to conduct experimental HCI research
- Provide students with the motivation, knowledge, and tools to understand users and their requirements for interaction
- Expose students to a range of prototyping tools and techniques
- Provide students with practical experience developing new methods of interaction
- Familiarise students with scientific writing for the HCI community
On successful completion of this module students will be able to:
- Perform a synthesis of relevant HCI literature
- Gather user requirements
- Design and/or implement new interaction techniques
- Design and/or implement novel interactive systems or applications
- Prepare a scientific research report
Outline Syllabus
This module covers advanced topics in experimental Human-Computer Interaction (HCI), with a particular focus on understanding users and their requirements, exploring design spaces, prototyping and developing interaction techniques.
Key topics include:
- The HCI research space:
- Academic vs. Industrial HCI research
- In the small vs. in the large
- In the lab vs. in the wild
- Understanding the HCI literature
- Interaction technologies and techniques
- Understanding users and requirements
- Prototyping, design methods (both with and without the user), and supporting tools
- Design space explorations
- Modelling techniques
- Writing for HCI research fora.
Assessment Proportions
SCC.403: Data Mining
- Terms Taught: Michaelmas Term only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a computing-related area in their home institution.
- Special circumstances only. Not open for normal applications from external students.
Course Description
This module provides a comprehensive coverage of the problems related to data representation, manipulation and processing in terms of extracting information from data, including big data.
Practical laboratory sessions will offer students an opportunity to gain a fundamental theoretical level of knowledge and skills in computer science. Students will then apply their working understanding to the data primer, data processing and classification. The module will enhance students familiarity with dynamic data space partitioning, using evolving, clustering and data clouds, and monitoring the quality of the self-learning system online.
Further skills provided on this module include the ability to develop software scripts that implement advanced data representation and processing and demonstrate their impact on the performance, as well as a working knowledge in listing, explaining and generalising the trade-offs of performance and complexity in designing practical solutions for problems of data representation and processing in terms of storage, time and computing power. Transferrable skills include development in time management and effective report writing.
Educational Aims
This module aims to:
- Introduce students to the challenges and opportunities which the Data offer
- Provide students with an understanding of data representation and processing and in particular clustering and classification methods and specific techniques
- Provide students with analysis and synthesis skills as applied to different methods for data representation and processing
- Provide students with an understanding of different types of data representation and processing methodologies
- Provide students with sufficient knowledge for the analysis of advanced data representation and processing methods
- Familiarise students with practical aspects of the applications of data representation and processing methods.
On successful completion of this module students will be able to:
- Demonstrate understanding of the concepts and specific methodologies for data representation and processing and their applications to practical problems
- Analyse and synthesise effective methods and algorithms for data representation and processing
- Develop software scripts that implement advanced data representation and processing and demonstrate their impact on the performance
- List, explain and generalise the trade-offs of performance and complexity in designing practical solutions for problems of data representation and processing in terms of storage, time and computing power
Outline Syllabus
This module will provide a comprehensive coverage of the problems related to Data representation, manipulation and processing in terms of extracting information from data, including big data. It has been designed to prepare the fundamental theoretical level of knowledge and skills (at the related laboratory sessions) of the students to this specific aspect of Computer Science which plays an important role in any system and application. In this way it prepares them for the second module on the topic of Data as well as for their projects.
The following topics will be covered:
- Data Primer: Setting the scene: Big Data, Cloud Computing; Data Representations, The time, storage and computing power compromise: off-line versus on-line;
- Data Pre-processing:
- Clustering: hierarchical (agglomerative, divisive), k-means, density-based clustering, on-line, evolving
- Classification
- Randomness and determinism, frequentistic and belief based approaches, probability density, recursive density estimation, averages and moments, important random signals, response of linear systems to random signals, random signal models.
- Discriminative (Linear Discriminant Analysis, Single Perceptron, Multi-layer Perceptron, Learning Vector Classifier, Support Vector Machines), Generative (Naive Bayes)
- Supervised and unsupervised learning, online and offline systems, adaptive and evolving systems, evolving versus evolutionary systems, normalisation and standardisation
- Fuzzy Rule-based Classifiers, Regression or Lable based classifiers
- Self-learning Classifiers, evolving Classifiers, dynamic data space partitioning using evolving clustering and data clouds, monitoring the quality of the self-learning system online, evolving multi-model predictive systems.
- Semi-supervised Learning (Self-learning, evolving, Bootstrapping, Expectation-Maximisation, ensemble classifiers)
- Information Extraction vs Retrieval, Inference mechanisms, Associative and Fuzzy Rules
Assessment Proportions
SCC.411: Building Big Data Systems
- Terms Taught: Lent / Summer Terms only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a computing-related area in their home institution.
- Special circumstances only. Not open for normal applications from external students.
- Must be taken with SCC.401-CS
Course Description
Introducing a range of architectural approaches, techniques and technologies that underpin today's global IT infrastructure, this module combines with other modules to form the systems stream of the programme. It is designed to enhance students knowledge of how building blocks are composed to create systems of systems.
Students will gain a detailed understanding and an ability to critique contemporary systems architecture in terms of scalability, resilience, performance and other shortcomings.
The principal ethos of this module is to focus on the principles, emergent properties and the application of systems elements as used in large-scale and high performance systems. Detailed studies and invited industrial speakers will be used to provide supporting real-world context and a basis for seminar discussions. Students are also offered hands-on measurement-based coursework that focuses on the scalability of a significant technology
Educational Aims
The module aims to:
- Enhance the students knowledge of how building blocks (systems elements) are composed to create systems of systems
- Detailed understanding and ability to critique contemporary systems architecture in terms of scalability, resilience, performance, and other shortcomings.
- Enable students to understand systems architecture in terms of its requisite components and underlying fundamental systems principles
- Enable students to comprehend and rationally decompose enterprise and large scale systems architectures
- Provide students with a detailed understanding of the state of the art in contemporary systems architectures
- Provide a scaffolding of theory and related research and how this relates to current systems architecture thinking
On successful completion of this module students will be able to:
- Demonstrate a deep understanding of the architectures and approaches for large-scale systems implementation
- Describe and critically evaluate techniques and paradigms used within enterprise-scale IT systems
- Understand and appreciate the trade-offs, strengths and limitations of systems architectures in principle and practice in modern IT systems
Outline Syllabus
In this module we explore the architectural approaches, techniques and technologies that underpin today's global IT infrastructure and particularly large-scale enterprise IT systems. It is one of two complementary modules that comprise the Systems stream of the Computer Science MSc, which together provide a broad knowledge and context of systems architecture enabling students to assess new systems technologies, to know where technologies fit in the larger scheme of enterprise systems and state of the art research thinking, and to know what to read to go deeper.
The principal ethos of the module is to focus on the principles, emergent properties and application of systems elements as used in large-scale and high performance systems. Detailed case studies and invited industrial speakers will be used to provide supporting real-world context and a basis for interactive seminar discussions.
Principles covered will include:
- Systems of systems composition
- Scalability concerns
- Systems integration/interoperability
- Software and Infrastructure as a Service (i.e. Cloud computing principles)
In addition to the discussion and seminar led aspects of the course, we envisage hands-on measurement-based coursework that looks empirically at the scalability of a significant technology, e.g. a cloud system such as Amazon EC2.
Assessment Proportions
SCC.413: Applied Data Mining
- Terms Taught: Lent / Summer Terms only
- US Credits: 4 US Semester Credits
- ECTS Credits: 7.5 ECTS
- Pre-requisites:
- Must have completed 3 years of undergraduate study in Computing or a Computing related subject, or must be enrolled for a Master's in a computing-related area in their home institution
- Special circumstances only. Not open for normal applications from external students.
- Must be taken with SCC.403
Course Description
This module provides students with up-to-date information on current applications of data in both industry and research. Expanding on the module Fundamentals of Data, students will gain a more detailed level of understanding about how data is processed and applied on a large scale across a variety of different areas.
Students will develop knowledge in different areas of science and will recognise their relation to big data, in addition to understanding how large-scale challenges are being addressed with current state-of-the-art techniques. The module will provide recommendations on the Social Web and their roots in social network theory and analysis, in addition their adaption and extension to large-scale problems, by focusing on primer, user-generated content and crowd-sourced data, social networks (theories, analysis), recommendation (collaborative filtering, content recommendation challenges, and friend recommendation/link prediction).
On completion of this module, students will be able to create scalable solutions to problems involving data from the semantic, social and scientific web, in addition to abilities gained in processing networks and performing of network analysis in order to identify key factors in information flow.
Educational Aims
This module aims to introduce students to current research problems and challenges related to data and its application, and develop skills, knowledge and understanding in:
- The use of semantic data at large-scale and the current research trends in distributed processing of semantic data
- Recommendations on the Social Web and their roots in social network theory and analysis, and their adaption and extension to large-scale problems
- The different areas of science and their relation to big data, and how large-scale challenges are being addressed with current state of the art techniques
On successful completion of this module students will be able to:
- Create scalable solutions to problems involving data from the semantic, social and scientific web
- Process networks and perform network analysis to identify key actors in information flow;
- Understand the current trends of research in the semantic, social and scientific web and what challenges still remain to be solved
- Demonstrate working knowledge of distributing work loads for scalable applications
Outline Syllabus
This module will provide students with up-to-date information on current applications of data in both industry and research. The module will build on SCC.403 Fundamentals of Data by explaining how data is processed and applied at large-scale across a variety of different areas.
- The Semantic Web: primer, crawling and spidering Linked Data, open-track large-scale problems (e.g. Billion Triples Challenge), distributed and federated querying, distributed reasoning, ontology alignment.
- The Social Web: primer, user-generated content and crowd-sourced data, social networks (theories, analysis), recommendation (collaborative filtering, content recommendation challenges, and friend recommendation/link prediction).
- The Scientific Web: from big data to bid science, open data, citizen science, and case studies (virtual environmental observatories, collaboration networks).
- Scalable data processing: primer, scaling the semantic web (scaling data processing and distributed reasoning using MapReduce and Apache Spark), scaling the social web (collaborative filtering, link prediction), and scalable network analysis for the scientific web.
Assessment Proportions
SCC300E: Erasmus Final Year Project
- Terms Taught: This project can be taken at any time.
- US Credits: 8 Semester Credits
- ECTS Credits: 15 ECTS
- Pre-requisites: This module is only available when there is a prior agreement of supervision.
Course Description
The Final Year Project is a substantial individual project, normally involving the principled design, implementation and evaluation of a substantial piece of software, experimental study or theoretical work. Students selection and allocation of supervision will be coordinated by the academic in charge Professor Gellersen. The requirements of the degree scheme, the student's interests and the supervisors area of expertise are taken into account during project allocation.
Educational Aims
On successful completion of this module students will be able to:
- Write a coherent proposal for a significantly complex Computer Science related project, including work packages, milestones and a time plan.
- Undertake the research required for an individual project, including a requirements analysis, searches of technical repositories, analysis and selection of alternative technologies, and surveys of existing bodies of work.
- Apply theoretical concepts and practical skills associated with the degree specific domain - write a coherent technical report that accurately documents a project. present, demonstrate and discuss objectively the highlights and drawbacks of the project to a technical and non-technical audience.
Outline Syllabus
The student normally receives weekly guidance (of around 45 minutes) from his/her project supervisor (a member of the School of Computing and Communications). Regular supervision ensures a required level of academic achievement and rigour is maintained throughout the project.
Assessment Proportions