Computer Laboratory

Course pages 2014–15


Please check the official timetables for timetable details.

Michaelmas term

  • Advanced Computer Design (P34) – Prof Simon Moore – 16 h

    The aim of this module is to provide an introduction to undertaking multithreaded multiprocessor computer architecture research using FPGAs as an emulation platform.

  • Algebraic Path Problems, with applications to Internet Routing (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.

  • Automated Reasoning (L18) – Dr Mateja Jamnik – 16 h

    Provides an introduction to how reasoning can be automated from an AI perspective. The course will introduce students to fundamental techniques for designing and implementing automated reasoners, and present advanced uses of theorem proving for solving mathematical problems via automated reasoning.

  • Building an Internet Router (P33) – Dr Andrew Moore – 16 h

    This module requires the full design, implementation, testing and inter-operability of a complex hardware and software system.

  • Category Theory and Logic (L108) – Prof Andrew Pitts – 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

    Uni-processor designs can no longer be scaled to take full advantage of advances in fabrication technology. This has forced a shift to parallel architectures in an attempt to sustain performance growth. This module examines the motivation for such a shift in detail, and covers the research challenges facing industry and academia in attempting to exploit single-chip parallel architectures.

  • Computer Security: Principles and Foundations (R209) – Dr Robert Watson, Prof Ross Anderson, Dr Frank Stajano, Dr Alastair Beresford – 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 and Robotics (E4F12) – Prof Roberto Cipolla – 16 h

    NB: Module offered by the Department of Engineering. 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.

  • Data Centric Systems and Networking (R212) – Dr Eiko Yoneki – 16 h

    This module provides an introduction to data centric systems and networking where data is a communication token in networking and its impact on the computer system's architecture. Large-scale distributed applications with big data processing will grow ever more in importance and become a pervasive aspect of the lives of millions of users. Supporting the design and implementation of robust, secure, and heterogeneous large-scale distributed systems is essential.

  • Introduction to Natural Language Syntax and Parsing (L95) – Prof Ted Briscoe, Dr Stephen Clark – 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.

  • Lexical Semantics (L114) – Dr Simone Teufel – 16 h

    This module provides an introduction to NLP research centered around lexical semantics (i.e., aspects of the meaning of words and relations between word meanings). Relevant phenomena are described theoretically, followed by a description of algorithms for determination of meaning and detection of text structure are presented. Special attention is given to adequate evaluation methods in each area. Applications are also discussed, where appropriate.

  • Low Power Embedded Systems Programming (P31) – Dr Ian Wassell, Mr Brian Jones – 16 h

    Teaches students how to write programs for low power embedded devices that communicate with other computers or devices to solve practical problems. The course will cover the relevant theoretical knowledge required for writing such applications, and the practical experience writing C programs for Atmel microprocessors. The module will also give students an appreciation for some of the research issues in low power embedded systems.

  • Modern Compiler Design (L25) – Prof Alan Mycroft, Dr David Chisnall – 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.

  • Overview of Natural Language Processing (L90) – Prof Ann Copestake, Dr Simone Teufel – 16 h

    NEW: 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.

  • Research Skills (C00) – Dr Alastair Beresford, Dr Alan Blackwell, Prof Ann Copestake, Prof Peter Robinson – 16 h

    Covers key research skills including: understanding the research process; how to read research papers; technical writing and technical presentation; and experiment design and statistical analysis of results. This module must be taken by all M.Phil students.

  • Research Students Lectures (RSL) – 4 h

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

  • Spoken Language Processing (L106) – Prof Phil Woodland, Prof Mark Gales, Prof Bill Byrne – 16 h

    The aim of this module is to introduce the underlying statistical approaches and some of the major techniques used for spoken language processing. Core statistical models that are used in a wide-range of speech and language applications will be discussed along with their underlying theory. Examples of how these models may be applied to speech processing applications, such as speech recognition and speaker verification, will be described.

  • Theories of Interaction and Socio-digital Design (R215) – Dr Alan Blackwell – 16 h

    This course is based on a reading group originally developed in collaboration with the Socio-Digital Systems group at Microsoft Research Cambridge. The objective is for computer science researchers to develop facility in discussing and critiquing the aims of their research, especially for an audience drawn from other academic disciplines. Participants may include research students and academic guests from other University departments.

Lent term

  • Advanced Functional Programming (L28) – Dr Anil Madhavapeddy, Dr Jeremy Yallop, Prof Alan Mycroft, Dr Leo White – 16 h

    NEW: This module aims to teach students how to use the features of modern typed functional programming languages to design and implement libraries and DSLs. It aims to demonstrate how such techniques can improve both correctness and efficiency.

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

    NEW: 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 four two-week sub-modules. The first introduced tracing, profiling, and performance analysis techniques. The remaining three sub-modules will apply these skills to critical parts of our systems stack corpus: local filesystems/storage, the network stack/protocols, and distributed filesystems (not yet a final list). Measurement and evaluation will be 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 research. Lectures will consider methodology, systems principles, and systems implementation. There will likely be 1-2 guest lectures from experts in the field.

  • Advanced Syntax and Semantics of Natural Language (L107) – Prof Ted Briscoe, Dr Stephen Clark – 16 h

    We will take an in-depth look at how to describe formally a wide-coverage grammar of English using Categorial Syntax and Montague Semantics. We will then go on to study how practical parsers can be developed within this framework capable of returning the most likely compositional interpretation of sentences with high accuracy.

  • Advanced Topics in Denotational Semantics (L29) – Prof Marcelo Fiore, Dr Ohad Kammar – 16 h

    NEW: This module aims to bring students up to date with current research in the denotational approach to the semantics of programming languages, with the objective of training students to start research in theoretical computer science on the mathematical foundations of programming languages and its applications.

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

    Research done within biomedical sciences is generating vast amounts of information which can, when processed 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 and sources 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 Frank Stajano, Dr Alastair Beresford – 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.

  • Discourse Processing (R216) – Dr Simone Teufel – 16 h

    This module provides an introduction to NLP research centered around discourse processing (i.e., the means by which larger pieces of text are structured), and to text summarisation methods, particularly those based on discourse processing.

  • Flows in Networks (L110) – Dr Richard Gibbens, Dr Andrei Bejan – 16 h

    This module aims to provide a understanding of models for flows in networks and to illustrate these ideas by considering road and communication networks.

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

    NB: 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.

  • Interactive Formal Verification (L21) – Prof Larry Paulson – 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.

  • Language and Concepts (R207) – Prof Ann Copestake – 16 h

    The notion of a concept is crucial to the way that we think about representation of language and human cognition. Concepts are relevant to AI and NLP/computational linguistics as well as other areas of Computer Science which are concerned with modelling the real world in a way which is comprehensible to humans, including semantic web technology. The aim of this course is to start from a computational perspective but to provide an overview of the interdisciplinary issues involved in the study of concepts, including ideas from linguistics, cognitive science, philosophy and neuroscience. The course will be organised as a reading group and assessed by an essay.

  • Machine Learning (E4F13) – Prof Zoubin Ghahramani – 16 h

    NB Module offered by the Department of Engineering. Machine learning (ML) 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.

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

    This module aims to provide an introduction to machine learning with specific application to tasks such as document topic classification, spam email filtering, 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, Gaussian mixture models and conditional random fields.

  • Sensor Fusion and Location Aware Computing (L40) – Dr Robert Harle, Dr Ramsey Faragher – 16 h

    NEW: This module provides a thorough understanding of modern sensor fusion and positioning techniques; a thorough understanding of the application of machine learning to positioning problems, from sensor bias determination to SLAM; exposure to current location aware computing systems, approaches, ongoing challenges; and practical experimentation and system development of a fully-working and relatively-advanced smartphone-based indoor positioning system.

  • Social and Technological Network Analysis (L109) – Prof Cecilia Mascolo – 16 h

    Importance of network theory; graph theory; network analyses [measures]. Random and scale-free networks. Small world behaviour. Applications (to Internet & WWW). Social networks and online social network analysis. Network evolution and cascading.

  • 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.

  • Usability of Programming Languages (P201) – Dr Alan Blackwell – 16 h

    Compiler construction is one of the basic skills of all computer scientists, and thousands of new programming, scripting and customisation languages are created every year. Yet very few of these succeed in the market, or are well regarded by their users. This course addresses the research questions underlying the success of new programmable tools. A programming language is essentially a means of communicating between humans and computers. Traditional computer science research has studied the machine end of the communications link at great length, but there is a shortage of knowledge and research methods for understanding the human end of the link. This course provides practical research skills necessary to make advances in this essential field. The skills acquired will also be valuable for students intending to pursue research in advanced HCI, or designing evaluation studies as a part of their MPhil research project.

Easter term

  • A Mathematical Theory of Distributed Games and Strategies (M22) – Prof Glynn Winskel – 6 h

    This module will give a rapid introduction to ongoing research in developing a mathematical theory of distributed games in which a Player (or a team of players) can interact and compete against an Opponent (or a team of opponents) in a highly distributed fashion, without, for instance, enforcing that their moves occur in a sequential fashion, or need to alternate. Although phrased in terms of `Player' and `Opponent' the dichotomy Player vs. Opponent can stand for Process vs. Environment, Prover vs. Disprover, or Ally vs. Enemy. These alternatives indicate the wide range of potential applications in computer science, logic, and beyond.

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

    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.