{ myear=2025, edit_url_course='https://webadmin.cst.cam.ac.uk/teaching/course/%m/%d/', edit_url_coursedb='https://webadmin.cst.cam.ac.uk/teaching/course/%m', menubar=0, recordings=1, supervisions=1, syllabus=htmlinclude( editor='Becky Straw', url='https://webadmin.cst.cam.ac.uk/teaching/course/%m/%s/%s_%m_syllabus.html', syllabus-html, ), teaching-admin, timetable-url='https://www.cst.cam.ac.uk/teaching/timetables', triposexam=1, groups=( year1( teaching-admin=( rs2150, ab3083, drr29, ), title='Part IA CST', part1a, ), year2( teaching-admin=( rs2150, ab3083, drr29, ), title='Part IB CST', part1b, ), year3( teaching-admin=( rs2150, ab3083, drr29, ), title='Part II CST', part2{ note='In addition to courses examined in Tripos papers 8 and 9, students also select two further modules, which are examined separately.', }, ), masters( assessmentpage=1, note="Students select five taught modules in total, distributed across Michaelmas and Lent terms. 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 starts in Michaelmas term and continues in Lent term will count as a single module.\n The taught modules are delivered in a range of styles and have a variety of assessment methods. For example: traditional Lecture-based modules which have the prefix 'L' such as 'L11 Algebraic path problems'; modules with a large proportion of Practical classes have the prefix 'P' such as 'P51 High performance networking'; and Reading clubs or seminar style modules have the prefix 'R' such as 'R254 Cybercrime'.", showcode=1, supervisions=0, syllabus=htmlinclude( editor='Lise Gough and Joy Rook', url='http://webadmin.cst.cam.ac.uk/teaching/course/%m/%s/%s_%m_syllabus.html', syllabus-html, ), teaching-admin=( lmg30, jlr59, ), title=Masters, triposexam=0, part3{ title='Part III', }, acs{ title='MPhil ACS', }, ), ), types={ masters-nfc='Masters module, not for credit'{ assessmentpage=0, classes={ acs, part3, }, heading='Not-for-credit modules', syllabus-footnote=*p( 'This module is offered as background for some Lent Term ACS modules but cannot be taken for credit.', ), }, masters-nfc-shared='Masters module borrowed from Part II, not for credit'{ assessmentpage=0, classes={ acs, part3, }, heading='Not-for-credit modules', materials=clone, recordings=clone, supervisions=0, syllabus=clone, syllabus-footnote=*p( 'This course is borrowed from ', *a( href='../part2.html', 'Part II of the Computer Science Tripos', ), '. This module is offered as background for some Lent Term ACS modules but cannot be taken for credit.', ), triposexam=0, }, masters-shared='Masters module borrowed from Part II'{ assessmentpage=1, classes={ acs, part3, }, heading, materials=clone, recordings=clone, supervisions=0, syllabus=( clone, htmlinclude( url='http://webadmin.cst.cam.ac.uk/teaching/course/%m/%s/%s_%m_syllabus.html', syllabus-html, ), ), syllabus-footnote=*p( 'This module is shared with ', *a( href='../part2.html', 'Part II of the Computer Science Tripos', ), '. Assessment will be adjusted for the two groups of students to be at an appropriate level for whichever course the student is enrolled on. ', *a( href=assessment.html, 'Further information about assessment and practicals', ), ' will follow at the first lecture.', ), triposexam=0, }, part2-unit='Part II module'{ assessmentpage=1, classes={ part2, }, heading=Modules, showcode=1, supervisions=0, triposexam=0, }, }, courses={ Algorithm1='Algorithms 1'{ lecturer=jkf21, classes={ part1a, }, term=L, hours=12, format='In-person lectures', moodle=256610, supervision_hours=3, }, Algorithm2='Algorithms 2'{ lecturer=jkf21, classes={ part1a, }, term=L, hours=12, format='In-person lectures', moodle=256611, prerequisites=( Algorithm1, ), supervision_hours=3, }, Databases=Databases{ lecturer=djg11, classes={ part1a, }, term=M, hours=12( '8 lectures + 2 practical classes', ), format='In-person lectures', moodle=256612, supervision_hours=3, }, DigElec='Digital Electronics'{ lecturer=ijw24, classes={ part1a, }, term=M, hours=12( '12 lectures+ 4 practical classes', ), format='In-person lectures', moodle=256613, supervision_hours=3, }, DiscMath='Discrete Mathematics'{ lecturer=( mpf23, js2878, ), classes={ part1a, }, term=M( L, ), hours=24, format='In-person lectures', moodle=256614, prerequisites='This course is a prerequisite for all theory courses.', supervision_hours=6, }, FoundsCS='Foundations of Computer Science'{ lecturer=jjl25, classes={ part1a, }, term=M, hours=12, format='In-person lectures', moodle=256615, prerequisites='This course is a prerequisite for Programming in Java and Prolog (Part IB).', supervision_hours=3, }, Graphics='Introduction to Graphics'{ lecturer=rkm38, classes={ part1a, }, term=M, hours=8, format='In-person lectures', moodle=256618, supervision_hours=2, }, HW='Hardware Practical Classes'{ lecturer=ijw24, classes={ part1a, }, term=M( L, ), format='In-person lectures', supervisions=0, triposexam=0, moodle=256616, }, IntDesign='Interaction Design'{ lecturer=hg410, classes={ part1a, }, term=E, hours=16( '8 hours lectures+ 8 hours practicals', ), format='In-person lectures', moodle=256617, supervision_hours=2, }, IntroProb='Introduction to Probability'{ lecturer=mj201, classes={ part1a, }, term=E, hours=12, format='In-person lectures', moodle=256619, prerequisites=( DiscMath, ), supervision_hours=3, }, MLRD='Machine Learning and Real-world Data'{ lecturer=( sht25, av308, ), classes={ part1a, }, term=L, hours=16, format='In-person lectures', moodle=256620, supervision_hours=4, }, OCaml='OCaml Practical Classes'{ lecturer=jjl25, classes={ part1a, }, term=M, format='In-person lectures', supervisions=0, triposexam=0, syllabus=0, moodle=256622, }, OOProg='Object-Oriented Programming'{ lecturer=rkh23, classes={ part1a, }, term=M, hours=10, format='In-person lectures', moodle=256621, supervision_hours=3, }, OpSystems='Operating Systems'{ lecturer=mk428, classes={ part1a, }, term=L, hours=12, format='In-person lectures', moodle=256623, prerequisites=( DigElec, ), supervision_hours=3, }, PrepCS='Preparation for Computer Science'{ lecturer=rkh23, classes={ part1a, }, term=P, supervisions=0, triposexam=0, syllabus=0, moodle=256606, url='https://www.cst.cam.ac.uk/freshers', }, Registratn=Registration{ lecturer=( arb33, rkh23, ), classes={ part1a, }, term=M, supervisions=0, triposexam=0, syllabus=0, moodle=256626, }, SWSecEng='Software and Security Engineering'{ lecturer=rkh23, classes={ part1a, }, term=E, hours=6, format='In-person lectures', moodle=256625, prerequisites='This course is a pre-requisite for the Part IB Group Project', supervision_hours=2, }, ArtInt='Artificial Intelligence'{ lecturer=sbh11, classes={ part1b, }, term=E, hours=12, format='In-person lectures', moodle=256646, prerequisites='In addition the course requires some mathematics, in particular some use of vectors and some calculus. Part IA Natural Sciences Mathematics or equivalent and Discrete Mathematics are likely to be helpful although not essential. Similarly, elements of Machine Learning and Real World Data, Foundations of Data Science, Logic and Proof, Prolog and Complexity Theory are likely to be useful. This course is a prerequisite for the Part II courses Machine Learning and Bayesian Inference and Natural Language Processing.'( Algorithm1, Algorithm2, ), supervision_hours=3, }, CompConstr='Compiler Construction'{ lecturer=jdy22, classes={ part1b, }, term=L, hours=16, format='In-person lectures', moodle=256647, prerequisites=( DiscMath, ), supervision_hours=4, }, CompNet='Computer Networking'{ lecturer=djg11, classes={ part1b, }, term=L, hours=20, format='In-person lectures', moodle=256650, supervision_hours=5, }, CompTheory='Computation Theory'{ lecturer=ad260, classes={ part1b, }, term=L, hours=12, format='In-person lectures', moodle=256649, prerequisites=( DiscMath, ), supervision_hours=3, }, Complexity='Complexity Theory'{ lecturer=tg508, classes={ part1b, }, term=E, hours=12, format='In-person lectures', moodle=256648, prerequisites=( Algorithm2, CompTheory, ), supervision_hours=3, }, ConcDisSys='Concurrent and Distributed Systems'{ lecturer=mk428, classes={ part1b, }, term=M, hours=16, format='In-person lectures', moodle=256652, prerequisites=( OOProg, OpSystems, ), supervision_hours=4, }, CySecurity=Cybersecurity{ lecturer=fms27, classes={ part1b, }, term=E, hours=12, format='In-person lectures', moodle=256653, prerequisites='Introduction to Computer Architecture and Computer Networking.'( CompNet, IntComArch, SWSecEng, UnixTools, ), supervision_hours=3, }, DataSci='Data Science'{ lecturer=djw1005, classes={ part1b, }, term=M, hours=16( '16 lectures', ), format='In-person lectures', moodle=256654, prerequisites='Mathematics for Natural Sciences', supervision_hours=4, }, 'ECAD+Arch'='ECAD and Architecture Practical Classes'{ lecturer=swm11, classes={ part1b, }, term=M, format='In-person lectures', supervisions=0, triposexam=0, moodle=256655, prerequisites=( DigElec, ), }, EconLaw='Economics, Law and Ethics'{ lecturer=ah793, classes={ part1b, }, term=M, hours=8, format='In-person lectures', moodle=256656, supervision_hours=2, }, FGraphics='Further Graphics'{ lecturer=aco41, classes={ part1b, }, term=M, hours=8, format='In-person lectures', moodle=256658, prerequisites='This course is a pre-requisite for Advanced Graphics and Image processing'( Graphics, ), supervision_hours=2, }, FHCI='Further Human–Computer Interaction'{ lecturer=( afb21, lec40, ), classes={ part1b, }, term=L, hours=8, format='In-person lectures', moodle=256668, prerequisites=( IntDesign, ), supervision_hours=2, }, ForModLang='Formal Models of Language'{ lecturer=pjb48, classes={ part1b, }, term=E, hours=8, format='In-person lectures', moodle=256657, prerequisites=( CompConstr, DiscMath, ), supervision_hours=2, }, GroupProj='Group Project'{ lecturer=( afb21, rkh23, tcg40, ), classes={ part1b, }, term=M( L, ), supervisions=0, triposexam=0, url='https://www.cl.cam.ac.uk/teaching/group-projects/', }, IntComArch='Introduction to Computer Architecture'{ lecturer=swm11, classes={ part1b, }, term=M, hours=16, format='In-person lectures', moodle=256661, prerequisites='Companion course: Electronic Computer Aided Design (ECAD)'( DigElec, ), supervision_hours=5, }, LogicProof='Logic and Proof'{ lecturer=mj201, classes={ part1b, }, term=L, hours=12, format='In-person lectures', moodle=256662, supervision_hours=3, }, ProgC='Programming in C and C++'{ lecturer=djg11, classes={ part1b, }, term=M, hours=12, format='In-person lectures', moodle=256664, supervision_hours=3, }, Prolog=Prolog{ lecturer=ijl20, classes={ part1b, }, term=L, hours=8, format='In-person lectures', moodle=256665, prerequisites=( Algorithm1, Algorithm2, FoundsCS, ), supervision_hours=2, }, Semantics='Semantics of Programming Languages'{ lecturer=pes20, classes={ part1b, }, term=L, hours=12, format='In-person lectures', moodle=256666, prerequisites='This course is a pre-requisite for Part II Hoare Logic and Model Checking and Types', supervision_hours=3, }, UnixTools='Unix Tools'{ lecturer=mgk25, classes={ part1b, }, term=M, hours=8, format='Video lectures', supervisions=0, triposexam=0, moodle=256667, prerequisites=( OpSystems, ), }, AAI='Affective Artificial Intelligence'{ lecturer=hg410, type=part2-unit, term=M, hours=16, format='In-person lectures', classmax=20, moodle=256764, prerequisites='Python programming skills (other programming languages are also OK but not always ideal), and basic background in machine learning or signal/image processing.', clone=L344{ type=masters-shared, synopsis='Affective Artificial Intelligence (Affective AI) aims to imbue machines with social and emotional intelligence (EQ). More specifically, Affective AI aims to create artificially intelligent systems and machines that can recognize, interpret, process, and simulate human social signals and behaviours, expressions, and emotions, to enhance human-AI interaction and communication. \r\n\r\nTo achieve this goal, Affective AI draws upon various scientific disciplines, including machine learning, computer vision, speech / natural language / signal processing, psychology and cognitive science, and ethics and social sciences.', }, }, AGIP='Advanced Graphics and Image Processing'{ lecturer=rkm38, type=part2-unit, term=M, hours=16( '16 lectures (2 per week)', ), format='In-person lectures', classmax=50, moodle=256783, prerequisites='Programming in Python. Transformations using matrices in 2D and 3d. Homogeneous coordinates.'( FGraphics, ), clone=L352{ type=masters-shared, hours=16( '16hrs lectures', ), classmax=25, prerequisites='Programming in Python. Transformations using matrices in 2D and 3D. Homogeneous coordinates', synopsis='Advanced Graphics covers topics related to processing, perception and display of images. The focus of the course is on the algorithms behind new emerging display technologies, such as virtual reality, augmented reality, and high dynamic range displays. It complements two computer graphics courses, Introduction to Graphics and Further Graphics, by introducing problems that became the part of graphics pipeline: tone-mapping, post-processing, displays and models of visual perception.', }, }, ATFP='Algebraic Techniques for Programming'{ lecturer=nk480, classes={ part2, }, term=L, format='In-person lectures', moodle=256913, prerequisites=( CAT, ), }, AdComArch='Advanced Computer Architecture'{ lecturer=rdm34, classes={ part2, }, term=L, hours=16, format='In-person lectures', moodle=256677, prerequisites=( IntComArch, ), supervision_hours=4, }, Bioinfo=Bioinformatics{ lecturer=pl219, classes={ part2, }, term=M, hours=12, format='In-person lectures', moodle=256678, supervision_hours=3, }, BusSeminrs='Business Studies Seminars'{ lecturer=sam56, contributor=( awh28, ), classes={ part2, }, term=E, format='In-person lectures', supervisions=0, triposexam=0, moodle=256680, }, Business='Business Studies'{ lecturer=sam56, contributor=( awh28, ), classes={ part2, }, term=M, hours=8, format='In-person lectures', moodle=256679, prerequisites=( EconLaw, ), supervision_hours=2, }, CAT='Category Theory'{ lecturer=mpf23, type=part2-unit, term=M, hours=16( '8 lectures (2 hours each)', ), format='In-person lectures', classmax=15, moodle=256763, prerequisites=( DiscMath, FoundsCS, Semantics, ), clone=L308{ type=masters-shared, hours=16, prerequisites='Familiarity with basic logic and naive set theory, with the lambda calculus and with inductively-defined type systems. Students will have to pass an entry test to ensure sufficient Mathematical background.', synopsis='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.', }, }, CC='Cloud Computing'{ lecturer=ek264, type=part2-unit, term=L, hours=14, format='In-person lectures', classmax=18, moodle=256762, prerequisites='Students must have a very good knowledge of Unix Tools and scripting'( CompNet, ConcDisSys, OpSystems, UnixTools, ), }, CE='Computing Education'{ lecturer=ss2600, type=part2-unit, term=L, hours=16( '3x2 hour sessions + 5x2 hour school placement', ), format='In person lectures & school placement', classmax=10, moodle=256760, }, CYC=Cybercrime{ lecturer=ah793, contributor=( rnc1, joh32, ), type=part2-unit, term=L, hours=16( '8 times 2 hour sessions', ), format='In-person lectures', classmax=18, moodle=256784, prerequisites=( EconLaw, SWSecEng, ), clone=R354{ type=masters-shared, hours=16, classmax=14, prerequisites='Undergraduate security courses', synopsis='This module examines major topics relating to cybercrime from an interdisciplinary perspective. These include offense types and techniques, targets, victimisation, social and financial cost, criminal marketplaces, offenders, detection and prevention, and regulation and policing. The module outlines: Key debates in cybercrime research; how crime is committed using computer systems; and provides an understanding of how cybercrime is regulated, policed, detected and prevented.', }, }, Crypto=Cryptography{ lecturer=mgk25, classes={ part2, }, term=L, hours=16, format='In-person lectures', moodle=256681, prerequisites='Mathematical Methods I from the NST Mathematics course'( Complexity, DiscMath, ), supervision_hours=4, }, DNN='Deep Neural Networks'{ lecturer=( fh277, ra702, ), contributor=( ndl32, ), type=part2-unit, term=L, hours=14( '14hrs lectures', ), format='In-person lectures', classmax=50, moodle=256759, }, DSP='Digital Signal Processing'{ lecturer=mgk25, type=part2-unit, term=M, hours=16, format='In-person lectures', moodle=256758, prerequisites='Mathematical Methods I and III from the NST Mathematics course (or equivalent), LaTeX and Julia (recommended)', clone=L314{ type=masters-shared, prerequisites='basic linear algebra', synopsis='This course teaches basic signal-processing principles necessary to understand many modern high-tech systems, with examples from audio processing, image coding, radio communication, radar, and software-defined radio. Students will gain practical experience from numerical experiments in programming assignments (in Julia, MATLAB or NumPy).', }, }, DenotSem='Denotational Semantics'{ lecturer=im496, classes={ part2, }, term=M, hours=10, format='In-person lectures', moodle=256682, supervision_hours=2, }, ECommerce=E-Commerce{ lecturer=sam56, contributor=( awh28, ), classes={ part2, }, term=L, hours=8( '2 examples classes may be held if no supervisions', ), format='In-person lectures', moodle=256683, prerequisites=( Business, CySecurity, EconLaw, ), supervision_hours=2, }, HCAI='Practical Research in Human-centred AI'{ lecturer=afb21, contributor=( as2006, ), type=part2-unit, term=M, hours=16( '8 x 2-hour sessions', ), format='In-person lectures', classmax=20, moodle=256750, prerequisites=( FHCI, ), clone=P342{ type=masters-shared, hours=16( '8 x 2hr sessions', ), prerequisites='Basic knowledge of machine learning', synopsis='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.', }, }, 'HLog+ModC'='Hoare Logic and Model Checking'{ lecturer=( rb2018, hk590, ), classes={ part2, }, term=E, hours=12, format='In-person lectures', moodle=256684, prerequisites=( LogicProof, Semantics, ), supervision_hours=3, }, InfoTheory='Information Theory'{ lecturer=rkh23, classes={ part2, }, term=M, hours=12, format='In-person lectures', moodle=256685, supervision_hours=3, }, MH='Mobile Health'{ lecturer=( cm542, jh2298, ), type=part2-unit, term=L, hours=16( '14 Lectures plus two practicals', ), format='In-person lectures', moodle=256754, clone=L349{ type=masters-shared, hours=16( '14h lectures and 2h practicals', ), synopsis='The course aims to pick up knowledge developed in undergraduate courses, related to machine learning as well as basic networking and systems and develop the concepts further into their applications into mobile systems and wearable with the aim of aiding the monitoring of our health.', }, }, MLBayInfer='Machine Learning and Bayesian Inference'{ lecturer=sbh11, classes={ part2, }, term=L, hours=16, format='In-person lectures', moodle=256687, prerequisites=( DataSci, DiscMath, ), supervision_hours=4, }, MRS='Mobile Robot Systems'{ lecturer=asp45, type=part2-unit, term=L, format='In-person lectures', classmax=40, moodle=256912, }, MSP='Multicore Semantics and Programming'{ lecturer=( pes20, tlh20, ), type=part2-unit, term=L, hours=16( '8 x 2hr sessions', ), format='In-person lectures', classmax=20, moodle=256753, prerequisites=( DiscMath, OOProg, Semantics, ), clone=L304{ contributor=( cp526, ), type=masters-shared, classmax=10, prerequisites='Some familiarity with discrete mathematics (sets, partial orders, etc.) and with sequential Java programming will be assumed. Experience with operational semantics and with some concurrent programming would be helpful.', synopsis='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.', }, }, MVP='Machine Visual Perception'{ lecturer=aco41, contributor=( cpt23, ), type=part2-unit, term=M, hours=12( 'Six 2-hour lectures', ), format='In-person lectures', classmax=30, moodle=256755, clone=L335{ type=masters-shared, hours=16( '12hrs lectures + 4hrs practicals', ), classmax=25, synopsis='This course aims at introducing the theoretical fundamentals and practical techniques for machine perception, the capability of computers to interpret data resulting from sensor measurements. It will introduce modern machine learning techniques with a focus on machine perception for visual data.', }, }, NLP='Natural Language Processing'{ lecturer=( ws390, yc632, ), type=part2-unit, term=M, hours=15( '12 lectures + 3 practical classes', ), format='In-person lectures', classmax=30, moodle=256752, prerequisites=( ArtInt, DataSci, ForModLang, FoundsCS, MLRD, ), clone=L390{ title='Overview of Natural Language Processing', type=masters-shared, hours=18( '12 lectures and 3 x 2 hour practical sessions', ), classmax=16, prerequisites="No prerequisites beyond those topics covered in an undergraduate CS degree.\r\nThis course is a prerequisite for L95: Introduction to Natural Language Syntax and Parsing if you haven't already done a NLP course", synopsis='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. Students will also be introduced to practical experimentation in natural language processing.', }, }, OptComp='Optimising Compilers'{ lecturer=tcg40, classes={ part2, }, term=L, hours=16, format='In-person lectures', moodle=256688, prerequisites=( CompConstr, ), supervision_hours=4, }, PrincComm='Principles of Communications'{ lecturer=jac22, classes={ part2, }, term=M, hours=16, format='In-person lectures', moodle=256690, prerequisites='This course may be useful for the Part III course on Network Architectures.\r\nUseful related courses: Computer Systems Modelling, Information Theory, Digital Signal Processing'( CompNet, ), supervision_hours=4, }, QCT='Quantum Complexity Theory'{ lecturer=tg508, type=part2-unit, term=M, hours=16, format='In-person lectures', moodle=256909, prerequisites='Mathematical maturity. Familiarity with complexity theory and quantum computing would be beneficial but not necessary.', clone=L330{ type=masters-shared, classmax=16, synopsis='This module is a research-focused introduction to the theory of quantum computing. The aim is to prepare the students to conduct research in quantum algorithms and quantum complexity theory.', }, }, QuantComp='Quantum Computing'{ lecturer=( sjh227, pm830, ), classes={ part2, }, term=L, hours=16, format='In-person lectures', moodle=256691, prerequisites=( CompTheory, DataSci, ), supervision_hours=4, }, 'TeX+Julia'='LaTeX and Julia'{ lecturer=mgk25, classes={ part2, }, term=M, hours=3, format='In-person lectures', supervisions=0, triposexam=0, moodle=256686, }, Types=Types{ lecturer=nk480, classes={ part2, }, term=M, hours=12, format='In-person lectures', moodle=256693, prerequisites=( CompTheory, Semantics, ), supervision_hours=3, }, UQA='Understanding Quantum Architecture'{ lecturer=pm830, type=part2-unit, term=M, hours=16, format='In-person lectures', moodle=256908, prerequisites='Having an understanding of complex numbers, linear algebra, basic probability, algorithms such as the Fast Fourier Transform and shortest paths are helpful for this course.', clone=L332{ type=masters-shared, hours=16( '8hrs lectures, 8hrs seminars', ), classmax=16, prerequisites='Requires introductory linear algebra - concepts such as eigenvalues, Hermitian matrices, unitary matrices. Taking the Part II Quantum Computing course (or similar) is helpful but not required. Familiarity with computer architecture and compilers is helpful.', synopsis='This course covers the architecture of a practical-scale quantum computer. We will examine the resource requirements of practical quantum applications, understand the different layers of the quantum stack, the techniques used in these layers and examine how these layers come together to enable practical quantum advantage over classical computing.', }, }, L101='Machine Learning for Language Processing'{ lecturer=av308, classes={ acs, part3, }, term=M, hours=16( '8 lectures + 8 seminar sessions', ), classmax=16, prerequisites='L90 Overview of Natural Language Processing (or similar) AND L95 Introduction to Natural Language Syntax and Parsing. These two modules may be taking concurrently with this module to meet the prerequisites', synopsis='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.', }, L118='Advanced Topics in Category Theory'{ lecturer=jv258, classes={ acs, part3, }, term=L, hours=16, prerequisites=( L308, ), synopsis='The module will introduce advanced topics in category theory. The aim is to train students to engage and start modern research on the mathematical foundations of higher categories, the graphical calculus, monoids and representations, type theories, and their applications in theoretical computer science, both classical and quantum.', }, L171='Reinforcement Learning'{ lecturer=ra702, classes={ acs, part3, }, term=M, hours=16( '8 x two-hour lectures', ), format='In-person lectures', classmax=20, prerequisites='Multivariable calculus, linear algebra, probability, machine learning', synopsis='The aim of this module is to present state-of-the-art reinforcement learning (RL) methods, incentivise students to understand RL theory and develop skills for coding deep RL methods.\r\n\r\nRL has seen unprecedented success in recent years. However, the majority of RL methods still require intricate skills and insights for successful applications. The goal of this module is to communicate the promising aspects of RL, but also ensure that students understand the limitations of the current RL methods.', }, L193='Explainable Artificial Intelligence'{ lecturer=mj201, contributor=( me466, zs315, ), classes={ acs, part3, }, term=L, hours=16( '6hrs lectures; 6 hrs presentations;4hrs practicals', ), format='In-person lectures', classmax=20, prerequisites='A solid background in statistics, calculus and linear algebra. We strongly recommend some experience with machine learning and deep neural networks (to the level of the first chapters of Goodfellow et al.’s “Deep Learning”). Students are expected to be comfortable reading and writing Python code for the module’s practical sessions.', synopsis='The recent palpable introduction of Artificial Intelligence (AI) models to everyday consumer-facing products, services, and tools brings forth several new technical challenges and ethical considerations. Amongst these is the fact that most of these models are driven by Deep Neural Networks (DNNs), models that, although extremely expressive and useful, are notoriously complex and opaque. This “black-box” nature of DNNs limits their ability to be successfully deployed in critical scenarios such as those in healthcare and law. Explainable Artificial Intelligence (XAI) is a fast-moving subfield of AI that aims to circumvent this crucial limitation of DNNs by either (i) constructing human-understandable explanations for their predictions, or (ii) designing novel neural architectures that are interpretable by construction.', }, L205='Principles of AI-driven Neuroscience and Translational Biomedicine'{ lecturer=( pl219, mm2703, tmla2, ), classes={ acs, part3, }, term=L, hours=16( '8 x 2hrs lectures', ), format='In-person lectures', classmax=20, prerequisites='Deep Learning (important), Machine learning principles (high important), basic of computer vision (important), basic of graph neural networks (important), basics of explainable AI (not compulsory), basics of geometric deep learning (not compulsory), Coding knowledge: Python-> libraries like: pytorch, numpy, panda etc.', synopsis='This module aims to provide students with a comprehensive understanding of the interplay between selected AI models, such as convolutional neural networks (CNNs), transformers, graph neural networks and Agentic AI; and core concepts in brain anatomy, connectomics, and medical imaging.', }, L313='Homotopy Type Theory & Univalent Foundations'{ lecturer=js2878, classes={ acs, part3, }, term=M, hours=16( '8 x 2-hour lectures', ), format='In-person lectures', classmax=15, prerequisites='Familiarity with basic logic, naïve set theory, and typed λ-calculus. Students will have to pass an entry test to ensure sufficient Mathematical background.', synopsis='Homotopy type theory/univalent foundations is a new foundations for general mathematics in which equality is relaxed to include symmetry, and sets arise as a special case of infinite-dimensional structures called homotopy types. This course introduces the basic notions of univalent foundations (dependent types, identity types, equivalences, truncation levels, the univalence axiom, classifying types, and fundamental groups). After taking this course, a student would be able to read and participate in the current discourse on the frontiers of univalent foundations.', }, L46='Principles of Machine Learning Systems'{ lecturer=ndl32, contributor=( tmdp2, ), classes={ acs, part3, }, term=L, hours=16( '8 × two-hour sessions', ), classmax=60, prerequisites='It is recommended that students have successfully completed introductory courses, at an undergraduate level, in: 1) operating systems, 2) computer architecture, and 3) machine learning. In addition, this course will heavily focus on deep neural network methodologies and assume familiarity with common neural architectures and related algorithms. If these topics were not covered within the machine learning course taken, students should supplement by reviewing material in a book like: "Dive into Deep Learning". Finally, students are assumed to be comfortable with programming in Python.', synopsis='This course will examine the emerging principles and methodologies that underpin scalable and efficient machine learning systems. Primarily, the course will focus on an exciting cross-section of algorithms and system techniques that are used to support the training and inference of machine learning models under a spectrum of computing systems that range from constrained embedded systems up to large-scale distributed systems. It will also touch up the new engineering practices that are developing in support of such systems at scale. When needed to appreciate issues of scalability and efficiency, the course will drill down to certain aspects of computer architecture, systems software and distributed systems and explore how these interact with the usage and deployment of state-of-the-art machine learning.', }, L48='Machine Learning and the Physical World'{ lecturer=che29, classes={ acs, part3, }, term=M, hours=16, classmax=30, prerequisites='A good background in statistics, calculus and linear algebra. A machine learning module such as Machine Learning and Bayesian Inference (https://www.cst.cam.ac.uk/teaching/2021/MLBayInfer) or equivalent is highly recommended.', synopsis='The module “Machine Learning and the Physical World” is focused on machine learning systems that interact directly with the real world. Building artificial systems that interact with the physical world have significantly different challenges compared to the purely digital domain. In the real world data is scares, often uncertain and decisions can have costly and irreversible consequences. However, we also have the benefit of centuries of scientific knowledge that we can draw from. This module will provide the methodological background to machine learning applied in this scenario. We will study how we can build models with a principled treatment of uncertainty, allowing us to leverage prior knowledge and provide decisions that can be interrogated.', }, L65='Geometric Deep Learning'{ lecturer=( pl219, pv273, ), classes={ acs, part3, }, term=L, hours=16( '8h lectures+4h practicals+4h student presentations', ), format='In-person lectures', classmax=20, prerequisites='Experience with machine learning and deep neural networks is recommended. Knowledge of concepts from graph theory and group theory is useful, although the relevant parts will be explicitly retaught.', synopsis='This module will study geometric deep learning -- machine learning approaches on nontrivially-structured data. It aims to provide students with the capability to analyse such data in an effective way, position geometric deep learning in a proper context with related fields, and enable students to contribute to this emerging area in future years. Specifically, it will highlight graph structures as an elegant abstraction that can be used to represent a wide variety of deep learning approaches, and there will be a corresponding focus on graph neural network architectures. The module will be grounded in theoretical concepts of invariance, equivariance, symmetries and network science, offering a sufficiently broad lens to tackle generic geometric deep learning setups (over grids, groups and manifolds---not only graphs).', }, L81='Proof Assistants'{ lecturer=( tb592, pes20, lads2, ), classes={ acs, part3, }, term=L, format='In-person lectures', classmax=16, synopsis='This module introduces students to interactive theorem proving using Isabelle and Lean. It includes techniques for specifying formal models of software and hardware systems and for deriving properties of these models.', }, L95='Introduction to Natural Language Syntax and Parsing'{ lecturer=( pjb48, fm611, ), classes={ acs, part3, }, term=M, hours=16, classmax=12, prerequisites='L90: Overview of Natural Language Processing or an equivalent undergraduate course', synopsis='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.', }, L98='Introduction to Computational Semantics'{ lecturer=( ws390, sht25, ), classes={ acs, part3, }, term=M, hours=16( '8 x 2 hour lectures', ), format='In-person lectures', classmax=16, prerequisites='Basic computational linguistics knowledge about morphology and syntax are assumed, roughly equivalent to the core chapters in Jurafsky and Martin\'s textbook "Speech and Language Processing"', synopsis='This course is an overview course of theoretical semantics and computational semantics. It covers truth-conditional logic-based formalisms and graph-based meaning representations, including the principle of semantic compositionality and scope. Based on these representations for the meaning of individual sentences, the course explores a range of semantic phenomena that extend beyond the sentence level. These include negation, some aspects of pragmatics, and cross-modal representations of meaning. The course also offers some psycholinguistic insights into how semantics is represented in the human mind, e.g., in early language acquisition and when language undergoes changes in a linguistic community.', }, P79='Cryptography and Protocol Engineering'{ lecturer=mk428, contributor=( dh623, ), classes={ acs, part3, }, term=L, hours=16( '8 x two-hour sessions', ), format='In-person lectures', classmax=16, prerequisites='Part II Cryptography or similar, Discrete Mathematics', synopsis='We all use cryptographic protocols every day: whenever we access an https:// website or send a message via WhatsApp or Signal, for example. In this module, students will get hands-on experience of how those protocols are implemented. Students will write their own secure messaging protocol from scratch, and then move on to a cryptographic protocol for private information retrieval (searching for data without revealing what you’re searching for).', }, R02='Network Architectures'{ lecturer=jac22, classes={ acs, part3, }, term=M, hours=16, classmax=16, prerequisites='Undergraduate courses that cover the material in Principles of Communications, Security, and Computer Systems Modelling', synopsis='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.', }, R160='Digital Money and Decentralised Finance'{ lecturer=( fms27, fs105, ), classes={ acs, part3, }, term=M, hours=16, format='In-person lectures', classmax=12, prerequisites='Part 1b Cybersecurity; Part II Cryptography (or equivalent from other universities)', synopsis="Our society is evolving towards digital payments and the elimination of physical cash. Digital alternatives to cash require trade-offs between various properties including unforgeability, traceability, divisibility, transferability without intermediaries, privacy, redeemability, control over the money supply and many more, often in conflict with each other. Since the 1980s, cryptographers have proposed a variety of clever technical solutions addressing some of these issues but it is only with the appearance of Bitcoin, blockchain and a plethora of copycat cryptocurrencies that a new asset class has now emerged, worth in excess of two trillion dollars (although plagued by extreme volatility). Meanwhile, most major countries have been planning the introduction of Central Bank Digital Currencies in an attempt to retain control. This seminar-style interactive module encourages the students to understand what's happening, what the underlying problems and opportunities are (technical, social and economic) and where we should go from here. We are at a historical turning point where an enterprising candidate might disrupt the status quo and truly make a difference.", }, R181='Computing for Collective Intelligence'{ lecturer=asp45, classes={ acs, part3, }, term=L, hours=16( '8 x 1 hour lectures; 8 x 1 hour reading groups', ), format='In-person lectures', classmax=16, prerequisites='Familiarity with core machine learning paradigms - Basic calculus (analytical skills) -\r\nBasic discretre optimization (combinatorics)', synopsis='There is a substantial body of academic work demonstrating that complex life is built by cooperation across scales: collections of genes cooperate to produce organisms, cells cooperate to produce multi-cellular organisms and multicellular animals cooperate to form complex social groups. Arguably, all intelligence is collective intelligence. Yet, to-date, many artificially intelligent agents (both embodied and virtual), are generally not conceived from the ground up to interact with other intelligent agents (be it machines or humans). The canonical AI problem is that of a monolithic and solitary machine confronting a non-social environment. This course aims to balance this trend by (i) equipping students with conceptual and practical knowledge on collective intelligence from a computational standpoint, and (ii) by conveying various computational paradigms by which collective intelligence can be modelled as well as synthesized.', }, R209='Computer Security: Principles and Foundations'{ lecturer=( rnw24, ah793, arb33, mk428, ), classes={ acs, part3, }, term=M, hours=16( '8 × two-hour seminar sessions', ), format='In-person and video lectures and online Q&A sessions', classmax=12, prerequisites='An undergraduate course in computer security is required. Undergraduate-level background in operating systems, computer architecture, and cryptography is also valuable; students lacking this background will require significant additional study to catch up. Students taking the Cybercrime R254 course may also wish to take this Lent term course.', synopsis='This course aims to provide students with a research-level introduction to the history and central themes of computer security, from its 1970s foundations to a selection of current topics. Throughout the course, we will consider diverse research methodologies used in the discipline, proposed approaches and systems intended to address security problems discovered with increasingly ubiquitous use of computer systems, along with the adversarial research intended to identify gaps and vulnerabilities.', }, R244='Large-scale data processing and optimisation'{ lecturer=ey204, classes={ acs, part3, }, term=M, hours=16, classmax=12, synopsis="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. Integrating machine learning approaches (e.g. Bayesian Optimisation, Reinforcement Learning) for system optimisation will be also explored in this course.", }, R252='Theory of Deep Learning'{ lecturer=( cm2099, mj201, ), classes={ acs, part3, }, term=L, hours=16( '8x2 hour reading group sessions', ), classmax=28, prerequisites='A strong background in calculus, probability theory and linear algebra, familiarity with differential equations, optimization and information theory is required. Students need to have studied Deep Neural Networks, familiarity with deep learning terminology (e.g. architectures, benchmark problems) as well as deep learning frameworks (pytorch, jax or similar) is assumed', synopsis='The objectives of this course is to expose you to one of the most active contemporary research directions within machine learning: the theory of deep learning (DL). While the first wave of modern DL has focussed on empirical breakthroughs and ever more complex techniques, the attention is now shifting to building a solid mathematical understanding of why these techniques work so well in the first place.', }, R265='Advanced Topics in Computer Architecture'{ lecturer=( swm11, rdm34, ), contributor=( jdw57, ), classes={ acs, part3, }, term=L, hours=16( '8 x 2-hour sessions', ), classmax=15, prerequisites='An undergraduate course in computer architecture. A good basic understanding of computer architecture will also suffice, e.g. provided by the Patterson and Hennessy book “The Hardware/Software Interface” and/or the early chapters of their book “Computer Architecture: A Quantitative Approach”.', synopsis='This course aims to provide students with an introduction to a range of advanced topics in computer architecture. It will explore the current and future challenges facing the architects of modern computers. These will also be used to illustrate the many different influences and trade-offs involved in computer architecture.', }, R277='Advanced topics in programming languages'{ lecturer=jdy22, classes={ acs, part3, }, term=M, hours=16( '8 x 2hrs lectures', ), format='In-person seminars', classmax=16, prerequisites='Part IB Semantics, Part II Types (or similar modules)', synopsis='This module explores various topics in programming languages beyond the scope of undergraduate courses. It aims to introduce students to ideas, results and techniques found in the literature and prepare them for research in the field.', }, }, lecturers={ MAllamanis='Miltos Allamanis'{ url='mailto:Miltiadis.Allamanis@microsoft.com', }, MBrockschmidt='Marc Brockschmidt'{ url='mailto:mabrocks@microsoft.com', }, aac10='Prof Ann Copestake', abr28='Dr Bogdan Roman', acn1='Dr Arthur Norman', aco41='Dr Cengiz Oztireli', acr31='Dr Andrew Rice', ad260='Prof Anuj Dawar', ad465='Dr Adria de Gispert', afb21='Prof Alan Blackwell', ah12='Prof Andy Hopper', ah793='Prof Alice Hutchings', aib29='Dr Andrei Bejan', alk23='Dr Anna Korhonen', am21='Prof Alan Mycroft', am2920='Dr Andrea Marinoni', amp12='Prof Andrew Pitts', aoy20='Dr Ali Ozgur Yontem', apc38='Dr Andrew Caines', arb33='Prof Alastair Beresford', as2006='Dr Advait Sarkar', asp45='Prof Amanda Prorok', atm26='Dr Theo Markettos', av308='Prof Andreas Vlachos', avsm2='Prof Anil Madhavapeddy', awh28='Dr Anthony Harris', awm22='Prof Andrew Moore', bdj23='Brian Jones', bh288='Dr Bjarki Holm', bk291='Dr Bartosz Klin', bns21='Dr Brian Shand', brmt2='Dr Blaise Thomson', carh4='Prof Sir Tony Hoare'{ url='http://research.microsoft.com/en-us/people/thoare/', }, caw77='Conrad Watt', cer54='Prof Carl Rasmussen'{ url='https://www.csap.cam.ac.uk/network/carl-rasmussen/', }, che29='Dr Carl Henrik Ek', ckh11='Chris Hadley', cm2099='Dr Challenger Mishra', cm542='Prof Cecilia Mascolo', cmab3='Dr Claire Benn', cp526='Dr Christopher Pulte', cpt23='Dr Christopher Town', cu200='Dr Christian Urban', dao29='Dr Dominic Orchard', dc552='Dr David Chisnall', de239='Dr David Evans', dh623='Dr Daniel Hugenroth', djg11='Dr David Greaves', djw1005='Dr Damon Wischik', dme26='Dr David Eyers', do242='Dr Diarmuid O’Seaghdha', dpm36='Dr Dominic Mulligan', drm10='Dr Derek McAuley', drt24='Dr Daniel Thomas', ejb1='Prof Ted Briscoe', ek264='Dr Evangelia Kalyvianaki', ek358='Dr Ekaterina Kochmar', es407='Dr Ekaterina Shutova', ey204='Dr Eiko Yoneki', ff286='Dr Fulvio Forni', fh277='Dr Ferenc Huszar', fhk1='Dr Frank King', fi224='Dr Fumiya Iida', fm611='Dr Fermin Moscoso del Prado Martin', fms27='Prof Frank Stajano', frc26='Dr Franck Courbon', fs105='Dr Ferdinando Samaria', fz261='Fangcheng Zhong', gcj21='Dr Graeme Jenkinson', gete2='Dr Guy Emerson', gst22='Dr George Taylor', gw104='Prof Glynn Winskel', hg410='Prof Hatice Gunes', hh360='Dr Heidi Howard', hk590='Hiroyuki Katsura', hlj36='Dr Heleen Janssen', hy260='Dr Helen Yannakoudakis', ijl20='Prof Ian Lewis', ijpdmt2='Ivo Timoteo', ijw24='Dr Ian Wassell', im496='Dr Ioannis Markakis', iml1='Prof Ian Leslie', jac22='Prof Jon Crowcroft', jal1='Jack Lang'{ url='http://www.emma.cam.ac.uk/teaching/fellows/display/?fellow=239', }, jas289='Dr John Sylvester', jc2106='Dr Jennifer Cobbe', jc2161='Dr Jagmohan Chauhan', jdw57='Dr Jonathan Woodruff', jdy22='Dr Jeremy Yallop', jgd1000='Prof John Daugman', jh2298='Dr Jing Han', jjl25='Dr Jon Ludlam', jkf21='Dr John Fawcett', jl221='Dr Joan Lasenby'{ url='http://www-sigproc.eng.cam.ac.uk/~jl/', }, jlf46='Dr Jonas Frey', jmb25='Prof Jean Bacon', jmh93='Dr Jonathan Hayman', joh32='Dr Jack Hughes', jp622='Dr Jean Pichon', js2878='Dr Jon Sterling', js573='Dr Jatinder Singh', js861='Dr Jaroslav Sevcik', jt796='Justin Tan', jv258='Prof Jamie Vicary', ki287='Dr Konstantinos Ioannidis', km10='Dr Ken Moody', ko201='Dr Karen Ottewell'{ url='http://www.langcen.cam.ac.uk/lc/staff/karen.html', }, ks775='Dr Kasper Svendsen', lads2='Dr Leo Ali Dominique Stefanesco', lec40='Dr Luke Church', lmi22='Dr L M Ioannou', lp15='Prof Larry Paulson', lpw25='Dr Leo White', lr346='Dr Laura Rimell', lz381='Dr Luca Zanetti', mcm79='Dr Mariana Marasoiu', me466='Mateo Espinosa Zarlenga', mgapb2='Dr Meven Lennon-Bertrand', mgk25='Dr Markus Kuhn', mj201='Prof Mateja Jamnik', mjcg='Prof Mike Gordon', mjfg100='Prof Mark Gales'{ url='http://mi.eng.cam.ac.uk/~mjfg/', }, mjp41='Dr Matthew Parkinson', mk428='Dr Martin Kleppmann', mm2703='Michail Mamalakis', mmam3='Dr Marwa Mahmoud', mns25='Matt Stuttle', mo390='Dr Maris Ozols', mom22='Dr Magnus Myreen', mp867='Dr Maria Perez-Ortiz', mpf23='Prof Marcelo Fiore', mr472='Dr Marek Rei', mrhg2='Dr Mark Gotham', mss84='Dr Michael Schlichtkrull', mtw29='Dr Mark Granroth-Wilding', na482='Dr Nada Amin', nad10='Prof Neil Dodgson', ndl21='Prof Neil Lawrence', ndl32='Prof Nic Lane', nhc30='Dr Nigel Collier'{ url='http://www.languagesciences.cam.ac.uk/directory/dr-nigel-collier', }, nk480='Dr Neel Krishnaswami', nr454='Dr Nicolas Rivera', nrs32='Dr Nishanth Sastry', ns441='Dr Nik Sultana', nz247='Dr Noa Zilberman', ok259='Dr Ohad Kammar', others=' (and others)'{ url, }, pat40='Dr Paul Taylor', pb355='Dr Alex Benton'{ url='http://bentonian.com/', }, pes20='Prof Peter Sewell', pjb48='Prof Paula Buttery', pl219="Prof Pietro Lio'", pm830='Dr Prakash Murali', pnb14='Dr Nick Benton', pp524='Dr Pedro Porto Buarque de Gusmao', pr10='Prof Peter Robinson', pv273='Dr Petar Veličković', pw117='Prof Phil Woodland'{ url='http://mi.eng.cam.ac.uk/~pcw/', }, ra702='Dr Rika Antonova', raa43='Dr Anne Alexander'{ url='http://www.digitalhumanities.cam.ac.uk/directory/raa43@cam.ac.uk', }, rb2018='Rini Banerjee', rc10001='Prof Roberto Cipolla'{ url='http://mi.eng.cam.ac.uk/~cipolla/', }, rc635='Dr Ronan Cummins', rdc42='Dr Ryan Cotterell', rdm34='Dr Robert Mullins', ret26='Dr Richard Turner'{ url='http://www.eng.cam.ac.uk/research/people/view/197', }, rg31='Dr Richard Gibbens', rgu20='Dr Raoul Urma', rja14='Prof Ross Anderson', rk647='Dr Roman Kolcun', rkh23='Dr Robert Harle'{ edit-support=1, }, rkm38='Dr Rafal Mantiuk', rmf25='Dr Ramsey Faragher', rmm1002='Prof Richard Mortier', rnc1='Dr Richard Clayton', rnw24='Prof Robert Watson', sac92='Dr Stephen Cummins', sam56='Stewart McTavish'{ edit-support=1, }, sbh11='Dr Sean Holden', sc609='Dr Stephen Clark', scy27='Shih-Chun You', sdf22='Dr Simon Frost', sht25='Prof Simone Teufel', sjh227='Dr Steven Herbert', sjm217='Dr Steven Murdoch', sjy11='Prof Steve Young', sk818='Prof Srinivasan Keshav', sk826='Dr KC Sivaramakrishnan', smh22='Dr Steven Hand', sps32='Dr Sergei Skorobogatov', ss2138='Sandra Servia Rodriguez', ss2600='Dr Sue Sentance', ss368='Dr Samuel Staton', stc40='Dr Stewart Carswell', swm11='Prof Simon Moore', tb592='Dr Thomas Bauereiss', tbc='(to be confirmed)'{ url, }, tcg40='Dr Tobias Grosser', tef10='Dr Thomas Forster', tg508='Prof Tom Gur', tgg22='Dr Timothy Griffin', th536='Dr Tomasz Hollanek', tlh20='Dr Timothy Harris', tmdp2='Dr Titouan Parcollet', tmj32='Prof Timothy Jones', tmla2='Dr Tiago Azevedo', tms41='Dr Thomas Sauerwald', tp366='Dr Tamara Polajnar', wjb31='Prof Bill Byrne'{ url='http://mi.eng.cam.ac.uk/~wjb31/', }, ws390='Dr Weiwei Sun', yc632='Dr Yulong Chen', yl868='Dr Yang Liu', zg201='Prof Zoubin Ghahramani'{ url='http://mlg.eng.cam.ac.uk/zoubin/', }, zs315='Dr Zohreh Shams', }, }