Department of Computer Science and Technology

Course pages 2017–18

MPhil ACS

Students select five modules in total, distributed across Michaelmas and Lent term. Students should select no more than four modules from those offered in Michaelmas and no more than two modules from those offered in Lent. A module that continues in Lent term will count as a single module.

Please check the official timetables for timetable details.

Michaelmas term

  • Advanced Operating Systems (L41) – Dr Robert Watson, Dr Graeme Jenkinson – 16 h

    Operating systems are complex, concurrent, and rapidly evolving software systems: the process model, hardware abstraction, storage and networking services, security primitives, and tracing/analysis/debugging tools are a critical foundation for our contemporary computing environments. This course teaches a blend of operating-system design and implementation as well as systems research methodology through a series of lectures and practical material split into three two-week sub-modules. The first module considers OS design, instrumentation, and measurement, motivated by a lab on I/O performance and the process model. The remaining two sub-modules focus on OS and micro-architectural analysis of Inter-Process Communication (IPC) and the Transport Control Protocol (TCP). Measurement and evaluation are a core aspect of the module: through labs and practical exercises, students will gain a deeper understanding of core principles in system behaviour, as well as analysis skills and intuitions that will serve them in future systems development and research. Lectures will consider methodology, systems principles, systems implementation, and current research in operating systems. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Advanced topics in mobile and sensor systems and data modelling (R249) – Prof Cecilia Mascolo – 16 h

    This module aims to introduce the latest research advancements in mobile and sensor systems and data analytics, spanning a range of domains including systems, data gathering, analytics and applications such as health, transportation, behavior monitoring, cyber-physical systems, autonomous vehicles, drones. The course will cover current and seminal research papers in the area of research. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Affective Computing (L44) – Dr Hatice Gunes – 16 h

    Affective Computing is a multidisciplinary field of research and practice concerned with understanding, recognizing and utilizing human emotions, expressions and communicative behaviour in the design of computational systems ranging from user-adaptive entertainment technology (gaming/arts) to assistive technology in clinical and biomedical context (e.g., autism/depression) and designing social robots. Affective computing has established itself in the last 15 years as a cohesive sub-discipline in computer science with its own international conference (the International Conference on Affective Computing and Intelligent Interaction), journal (the IEEE Transaction on Affective Computing), and professional society (the Association for the Advancement of Affective Computing (AAAC), former HUMAINE Association). Progress in the field has triggered increasing industry interest – in January 2016 Apple Inc. purchased Emotient Inc., a startup that uses artificial-intelligence technology to read people’s emotions by analyzing facial expressions.

  • Algebraic Path Problems (L11) – Dr Timothy Griffin – 16 h

    A great deal of interesting work was done in the 1970s in generalizing shortest path algorithms to a wide class of semirings – called “path algebras” or “dioids”. Although the evolution of Internet Routing protocols does not seem to have taken much inspiration from this work, recent “reverse engineering” efforts have demonstrated that an algebraic approach is very useful for both understanding existing protocols and for exploring the design space of future Internet routing protocols. This course is intended to present the basic mathematics needed to understand this approach. No previous background will be assumed. The course will start from scratch and end with open research problems. Many examples inspired by Internet Routing will be presented along the way.

  • Category Theory, Type Theory and Logic (L108) – Prof Marcelo Fiore – 16 h

    Category theory provides a unified treatment of mathematical properties and constructions that can be expressed in terms of "morphisms" between structures. It gives a precise framework for comparing one branch of mathematics (organized as a category) with another and for the transfer of problems in one area to another. Since its origins in the 1940s motivated by connections between algebra and geometry, category theory has been applied to diverse fields, including computer science, logic and linguistics. This course introduces the basic notions of category theory: adjunction, natural transformation, functor and category. We will use category theory to organize and develop the kinds of structure that arise in models and semantics for logics and programming languages.

  • Chip Multiprocessors (R05) – Dr Robert Mullins – 16 h

    This course provides an introduction to parallel computing with a particular focus on chip-multiprocessors. The course begins by examining the potential advantages of multi- and many-core processors. It explores the basics of parallel algorithm design, approaches to parallel programming and the architecture of modern chip-multiprocessors. The final seminar will be given by a guest speaker from industry.

  • Computer Security: Principles and Foundations (R209) – Dr Robert Watson, Prof Ross Anderson, Dr Alastair Beresford, Dr Daniel Thomas – 16 h

    This course aims to provide students with an introduction to the history and central themes of computer security, from its 1970s foundations to some current research topics, with a theme of how to defend cloud-based systems against capable motivated opponents. The course considers first local computer systems and then distributed systems; however, we will rapidly discover that this is an artificial distinction that only becomes more awkward as we enter the current period. Throughout the course, we will consider proposed systems along with the adversarial research intended to identify gaps and vulnerabilities.

  • Computer Vision (LE48) – Prof John Daugman, Dr Christopher Town, Dr Marwa Mahmoud – 16 h

    Note: this module may not be offered in 2018-19. Lectures for this module are offered by the Department of Engineering. Assessment is carried out in the Computer Laboratory. The module aims to introduce the principles, models and applications of computer vision. The course will cover image structure, projection, stereo vision, and the interpretation of visual motion. It will be illustrated with case studies of industrial (robotic) applications of computer vision, including visual navigation for autonomous robots, robot hand-eye coordination and novel man-machine interfaces. Assessment will include practical exercises and a mini-project which in undertaken in Lent Term. There is no written examination for Part III or MPhil students. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Interactive Formal Verification (L21) – Dr Dominic Mulligan – 16 h

    Introduces students to interactive theorem proving using Isabelle. It includes techniques for specifying formal models of software and hardware systems and for deriving properties of these models.

  • Introduction to Natural Language Syntax and Parsing (L95) – Prof Ted Briscoe – 16 h

    This module aims to provide a brief introduction to linguistics for computer scientists and then goes on to cover some of the core tasks in natural language processing (NLP), focussing on statistical tagging and parsing. We will look at how to evaluate taggers and parsers and see how well state-of-the-art tools perform given current techniques.

  • Introduction to networking and systems measurements (L50) – Dr Andrew Moore, Dr Noa Zilberman – 16 h

    Systems research refers to the study of a broad range of behaviours arising from a complex system design, including: resource sharing and scheduling; interactions between hardware and software; network topology, protocol and device design and implementation; low-level operating systems; Interconnect, storage and more. This module will: teach performance measurement methodology and practice through profiling experiments; expose students to real-world systems artefacts eident through different measuremnet tools; develop scientific writing skills thorough a series of laboratory reports; and provide research skills for characterization and modelling of systems and networks using measurements.

  • Large-scale data processing and optimisation (R244) – Dr Eiko Yoneki – 16 h

    This module provides an introduction to large-scale data processing, optimisation, and the impact on computer system's architecture. Large-scale distributed applications with high volume data processing such as training of machine learning will grow ever more in importance. Supporting the design and implementation of robust, secure, and heterogeneous large-scale distributed systems is essential. To deal with distributed systems with a large and complex parameter space, tuning and optimising computer systems is becoming an important and complex task, which also deals with the characteristics of input data and algorithms used in the applications. Algorithm designers are often unaware of the constraints imposed by systems and the best way to consider these when designing algorithms with massive volume of data. On the other hand, computer systems often miss advances in algorithm design that can be used to cut down processing time and scale up systems in terms of the size of the problem they can address. Integrating machine learning approaches for system optimisation will also be explored in this course.

  • Machine Learning and Algorithms for Data Mining (L42) – Dr Mateja Jamnik, Dr Pietro Lio, Dr Thomas Sauerwald – 16 h

    This module aims to introduce students to basic principles and methods of machine learning algorithms that are typically used for mining large data sets. In particular, we will look into algorithms typically used for analysing networks, fundamental principles of techniques such as decision trees and support vector machines, and finally, neural network architectures. The students will gain practical understanding through a coding exercise where they will implement and apply one machine learning algorithm on a particular large data set. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Machine Learning for Language Processing (L101) – Prof Ted Briscoe, Prof Ann Copestake – 16 h

    This module aims to provide an introduction to machine learning with specific application to tasks such as document classification, spam email filtering, language modelling, part-of-speech tagging, and named entity and event recognition for textual information extraction. We will cover supervised, weakly-supervised and unsupervised approaches using generative and discriminative classifiers based on graphical models, including (hidden) Markov models and CRFs, and clustering / dimensionality-reduction methods, such as latent Dirichlet allocation and neural word embeddings.

  • Modern Compiler Design (L25) – Dr David Chisnall, Dr Timothy Griffin – 16 h

    The LLVM project provides a modular set of libraries for building compilers, used in both academic research and industry. It therefore provides a rare opportunity for students to gain experience with a system that is both state-of-the-art in terms of research and also of direct industrial relevance. The course will focus largely one middle of the compiler – the analysis, transform, and optimisation pipeline – and will require the students to design and implement language-specific optimisations.

  • Multicore Semantics and Programming (R204) – Prof Peter Sewell, Dr Timothy Harris – 16 h

    In recent years multiprocessors have become ubiquitous, but building reliable concurrent systems with good performance remains very challenging. This module introduces some of the theory and the practice of concurrent programming, from hardware memory models and the design of high-level programming languages to the correctness and performance properties of concurrent algorithms.

  • Network Architectures (R02) – Prof Jon Crowcroft – 16 h

    The world needs more network architects! This module will discuss and critique historical and contemporary network architectures including ATM, TCP/IP and 3G, as well as cover emerging sensor networks and delay tolerant approaches.

  • Overview of Natural Language Processing (L90) – Dr Helen Yannakoudakis, Prof Ann Copestake – 18 h

    This module introduces the fundamental techniques of natural language processing. It aims to explain the potential and the main limitations of these techniques. Some current research issues are introduced and some current and potential applications discussed and evaluated.

  • Probabilistic Machine Learning (LE49) – Prof Carl Rasmussen, Prof Alan Blackwell, Dr Damon Wischik, Dr Maria Perez-Ortiz – 16 h

    Note: this module may not be offered in 2018-19. Probablistic machine learning is an interdisciplinary field focusing on both the mathematical foundations and practical applications of systems that learn, reason and act. The goal of machine learning is to automatically extract knowledge from observed data for the purposes of making predictions, decisions and understanding the world. The aim of this module is to introduce students to basic concepts in machine learning, focusing on statistical methods for supervised and unsupervised learning. The module will be structured around three recent illustrative successful applications: Gaussian processes for regression and classification, Latent Dirichlet Allocation models for unsupervised text modelling and the TrueSkill probabilistic ranking model. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Research Skills Programme (RSP) – (to be confirmed) – 12 h

    To provide advice on and training in a variety of practical skills required for research. To provide training in a subset chosen from the diverse set of skills that will be useful in the other research-led modules, in the individual project, and in the student's future career. This programme must be taken by all M.Phil students and CPGS students. Note that this is not one of the five modules taken for the examination of the M.Phil and should not be chosen as a preferred module.

  • Research Students Lectures (RSL) – (to be confirmed) – 6 h

    A series of lunchtime lectures prepared and given by Computer Laboratory research students.

  • Special topic MT (S500) – 16 h

    Up to one taught module may be replaced by a 'Special Topic'.

Lent term

  • Advanced Functional Programming (L28) – Dr Jeremy Yallop, Dr Nada Amin – 16 h

    This module shows how to use the features of modern typed functional programming languages such as OCaml and Haskell to design and implement libraries and DSLs. It introduces a variety of programming techniques for improving both correctness and efficiency.

  • Advanced Operating Systems (L41)(continuing) – 16 h

    Operating systems are complex, concurrent, and rapidly evolving software systems: the process model, hardware abstraction, storage and networking services, security primitives, and tracing/analysis/debugging tools are a critical foundation for our contemporary computing environments. This course teaches a blend of operating-system design and implementation as well as systems research methodology through a series of lectures and practical material split into three two-week sub-modules. The first module considers OS design, instrumentation, and measurement, motivated by a lab on I/O performance and the process model. The remaining two sub-modules focus on OS and micro-architectural analysis of Inter-Process Communication (IPC) and the Transport Control Protocol (TCP). Measurement and evaluation are a core aspect of the module: through labs and practical exercises, students will gain a deeper understanding of core principles in system behaviour, as well as analysis skills and intuitions that will serve them in future systems development and research. Lectures will consider methodology, systems principles, systems implementation, and current research in operating systems. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Advanced Topics in Computer Systems (R01) – Dr Richard Mortier – 16 h

    An overview of “systems research”, a broad area covering operating systems, database systems, file systems, distributed systems and networking. The focus will be on critical thinking: the ability to argue for and/or against a particular approach or idea. Each week students will read and critique (and sometimes present) research papers in the field.

  • Advanced Topics in Natural Language Processing (R222) – Prof Ted Briscoe, Prof Ann Copestake – 16 h

    Not offered in 2017-18; Returns in 2018-19: This module aims to cover at least four selected topics in enough detail and depth so that participants are potentially in a position to contribute to research on the topic. Each topic will be introduced with a lecture which, building on the material covered in the prerequisite courses, will make the current research literature accessible. The three seminar sessions will typically be run as a reading group with student presentations and discussion and will typically cover about six recent papers from the literature.

  • Advanced topics in mobile and sensor systems and data modelling (R249)(continuing) – 16 h

    This module aims to introduce the latest research advancements in mobile and sensor systems and data analytics, spanning a range of domains including systems, data gathering, analytics and applications such as health, transportation, behavior monitoring, cyber-physical systems, autonomous vehicles, drones. The course will cover current and seminal research papers in the area of research. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Biomedical Information Processing (R214) – Dr Anna Korhonen, Dr Pietro Lio, Dr Nigel Collier – 16 h

    Research done within biomedical sciences is generating vast amounts of information which can, when analysed appropriately, improve our understanding of the complex processes that govern life, death and disease. This course surveys computational techniques that can be used to process biomedical data with the overall goal of supporting the processes of scientific inquiry, problem solving, and decision making in biomedical sciences. A variety of data types will be introduced, along with data and text mining techniques that can be used to analyse, extract, discover and integrate biomedical information at levels ranging from molecular through human populations. The course surveys specific problems in biology, clinical medicine and public health and shows how information processing can support practical applications in these areas.

  • Computer Security: Current Applications and Research (R210) – Prof Ross Anderson, Dr Robert Watson, Dr Alastair Beresford, Dr Daniel Thomas – 16 h

    In the second security course in the ACS, we turn our attention to active research topics in computer security at the Computer Laboratory. One unifying theme is how to build secure systems at scale that contain more secure and less secure components. Building on the lessons from multilevel secure systems and security protocols discussed in the first course, we will explore infrastructure versus applications; services versus clients; the use of smartcards and other cryptographic processors; API security; and failure modes from covert channels to concurrency vulnerabilities.

  • Computer Vision (LE48)(continuing) – 16 h

    Note: this module may not be offered in 2018-19. Lectures for this module are offered by the Department of Engineering. Assessment is carried out in the Computer Laboratory. The module aims to introduce the principles, models and applications of computer vision. The course will cover image structure, projection, stereo vision, and the interpretation of visual motion. It will be illustrated with case studies of industrial (robotic) applications of computer vision, including visual navigation for autonomous robots, robot hand-eye coordination and novel man-machine interfaces. Assessment will include practical exercises and a mini-project which in undertaken in Lent Term. There is no written examination for Part III or MPhil students. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Deep learning for natural language processing (R228) – Dr Stephen Clark, (to be confirmed) – 16 h

    NB: Offered in 2017-18 only. Deep learning has become the dominant approach for a number of disciplines in Artificial Intelligence, including Natural Language Processing (NLP). The recent practical successes of Deep Learning, leading to improvements in fundamental NLP technologies such as machine translation, have created enormous interest in academia and industry. By the end of the course, students will have an understanding of the fundamental techniques in deep learning and neural networks which enable the development of effective NLP applications. They will also have experience of using Google's Tensorflow software - one of the most popular development environments for building deep learning models - to solve NLP tasks.

  • High performance networking (P51) – Dr Noa Zilberman – 16 h

    NEW: This module provides an introduction to High Performance Newtworking. It explores both software and hardware aspects and provides the students with an opportunity to experience high performance networking design and usage first hand.

  • Image Processing and Image Coding (E4F8) – Dr Joan Lasenby – 16 h

    Note: this module may not be offered in 2018-19. This module offered by the Department of Engineering. Sophisticated processing of images by digital hardware is now fairly common, and ranges from special effects in video games to satellite image enhancement. Three of the main application areas are video data compression, image enhancement, and scene understanding. This module introduces the key tools for performing these tasks, and shows how these tools can be applied. This module is offered by the Department of Engineering. Assessment is by a written examination at the beginning of Easter Term.

  • Interaction with machine learning (R230) – Prof Alan Blackwell, Dr Advait Sarkar – 16 h

    This is an advanced course in human-computer interaction, with a specialist focus on intelligent user interfaces and interaction with machine-learning and artificial intelligence technologies. The format will be largely practical, with students carrying out an original empirical research investigation over the course of one term. All empirical studies will address human interaction with some kind of model-based system for planning, decision, automation etc. Possible study formats might include: System evaluation, Field observation, Hypothesis testing experiment, Design intervention, Corpus analysis, or others as shown to be appropriate from evidence of prior research publications that have adopted specific empirical formats.

  • Machine Learning and Algorithms for Data Mining (L42)(continuing) – 16 h

    This module aims to introduce students to basic principles and methods of machine learning algorithms that are typically used for mining large data sets. In particular, we will look into algorithms typically used for analysing networks, fundamental principles of techniques such as decision trees and support vector machines, and finally, neural network architectures. The students will gain practical understanding through a coding exercise where they will implement and apply one machine learning algorithm on a particular large data set. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Probabilistic Machine Learning (LE49)(continuing) – 16 h

    Note: this module may not be offered in 2018-19. Probablistic machine learning is an interdisciplinary field focusing on both the mathematical foundations and practical applications of systems that learn, reason and act. The goal of machine learning is to automatically extract knowledge from observed data for the purposes of making predictions, decisions and understanding the world. The aim of this module is to introduce students to basic concepts in machine learning, focusing on statistical methods for supervised and unsupervised learning. The module will be structured around three recent illustrative successful applications: Gaussian processes for regression and classification, Latent Dirichlet Allocation models for unsupervised text modelling and the TrueSkill probabilistic ranking model. In 2017-18, this is a single module that starts in Michaelmas Term and carries over into Lent Term. It is not a double module.

  • Research Skills Programme (RSP)(continuing) – 12 h

    To provide advice on and training in a variety of practical skills required for research. To provide training in a subset chosen from the diverse set of skills that will be useful in the other research-led modules, in the individual project, and in the student's future career. This programme must be taken by all M.Phil students and CPGS students. Note that this is not one of the five modules taken for the examination of the M.Phil and should not be chosen as a preferred module.

  • Special topic LT (S501) – 16 h

    Up to one taught module may be replaced by a 'Special Topic'.

  • System on Chip Design and Modelling (P35) – Dr David Greaves – 16 h

    A current-day system on a chip (SoC) consists of several different microprocessor subsystems together with memories and I/O interfaces. This practical module covers SoC design and modelling techniques with emphasis on architectural exploration, assertion-driven design and the concurrent development of hardware and embedded software.

Easter term

  • Critical Coding for Digital Humanities (M005) – Prof Alan Blackwell, Dr Anne Alexander – 12 h

    NB: Not for credit option. An immersive co-teaching course, in which students from different disciplinary backgrounds work in pairs to jointly create a novel software application. The course is primarily practical, with practical work carried out on the students' own laptops. It involves six two-hour sessions, taught over a single week (Friday to Thursday), and a presentation session on the final Friday.