Department of Computer Science and Technology – Course pages 2020–21: Concurrent and Distributed Systems – Course materials skip to primary navigationskip to content Study at Cambridge About the University Research at Cambridge Search site Home Study at Cambridge Undergraduate Courses Applying Events and open days Fees and finance Student blogs and videos Graduate Why Cambridge Course directory How to apply Fees and funding Frequently asked questions International students Continuing education Executive and professional education Courses in education About the University How the University and Colleges work History Visiting the University Term dates and calendars Map For media Video and audio Find an expert Publications Global Cambridge News Events Public engagement Jobs Give to Cambridge Research at Cambridge For staff For current students For alumni For business Colleges & departments Libraries & facilities Museums & collections Email & phone search Computer Laboratory Teaching Courses 2020–21 Concurrent and Distributed Systems Course materials Department of Computer Science and Technology Concurrent and Distributed Systems Home The department Overview People Overview Academic staff Support staff Contract researchers Fellows & affiliates PhD students Visitors Seminars Overview Wednesday Seminar Series Wheeler Lectures women@cl 10th Anniversary Computer Laboratory 75th Anniversary History Facilities Overview Reception Food Shopping and leisure Cycling Library Overview [no title found] Library guides Catalogues Coronavirus resources Electronic resources Local services Lab technical reports External technical reports Resource lists Reading lists Reprographics equipment Archives Maps and directions Contact information Research Overview Artificial Intelligence Overview People Group Meetings Project ideas for current students Computer Architecture Overview Projects and research topics ACS & Part II/III Project Suggestions People Selected Publications Open source components Group Meetings Contact Details Digital Technology Graphics & Interaction Overview Research Members Projects Applying to do a PhD Project suggestions Other information Natural Language Processing Overview People Publications Projects Postgraduate opportunities Resources Programming, Logic, Semantics Security Overview People Publications Projects and topics Security Seminar Series Meetings Courses Posters Journals Mailing lists blog Systems Overview Research Projects Members Seminars Student Projects Research support Overview Research grants Fellowships Meetings & Travel Industrial Collaboration Commercialisation Writing a proposal Impact statements Collaborating with the Computer Lab Making your work public Admissions Overview Undergraduate Computer Science at Cambridge Overview Course Open Days Apply CSAT FAQ Contact MPhil ACS Overview Modules PhD applications Research Graduate Admissions Prospectus Funding deadlines PhD degree Overview Research Graduate Admissions Prospectus Funding deadlines MPhil in Advanced Computer Science CPGS Premium Research Studentship Student Administration Teaching Overview Part IA Part IB Part II Masters courses Overview Induction for M.Phil and Part III students ACS Forms Part III and ACS projects PhD students Freshers Courses 2019–20 Overview Part IA CST 75% Part IA CST 50% Part IA NST Part IB CST 75% Part IB CST 50% Part II CST 75% Part II CST 50% Part III MPhil ACS Lecturer index Instructions for lecturers Courses 2020–21 Overview Part IA CST Part IB CST 75% Part IB CST 50% Part II CST 75% Part II CST 50% Part III MPhil ACS Lecturer index Instructions for lecturers Undergraduate Exams Overview Examination dates Examination results Examiners' reports Plagiarism and collusion Purchase of calculators Data Retention Policy Past exam papers Guidance on deadlines Part III Assessment MPhil Assessment Student Complaint Procedure Lecture timetables Overview Short form timetable Supervisions Overview Part II supervisions overview Part II sign-up dates Notes on supervising Supervisor support Academic exchanges Overview Advice for students visiting Cambridge UROP internships Part IB group projects Overview Timetable Photos Previous years Part II projects Overview Briefing document (Pink Book) Important dates Overseers Phase 1 report Back-up advice Resources Declaration Studies Involving Human Participants Failure to submit proposal Selection Tips Declaration of originality Submission of dissertation IP ownership Diploma model projects Older project suggestions Supervising Notes Overseer Briefing Notes Directors of Studies Resources Overview Managed Cluster Service Part III and MPhil machines Online services Installing Linux MATLAB Microsoft Azure for Education Membership Miscellaneous Overview News Honours Obituaries Overview Neil Wiseman, 1934–1995 Roger Needham, 1935–2003 David Wheeler, 1927–2004 Karen Spärck Jones, 1935–2007 Judith Ann Bailey, 1934–2008 Robin Milner, 1934–2010 Sir Maurice Wilkes, 1913–2010 Michael JC Gordon, 1948–2017 Richard Gibbens, 1962–2018 Internal information Overview New arrivals Overview An introduction to our computing facilities Information for new PhD students Information for new staff Information for visitors Information for hosts of visitors General information Induction Guidelines Specialist resources System administration Overview Email Printing and scanning Filespace The CL network SSH access to the CL systems Supported platforms Generic Unix/Linux information Web servers and sites The RT ticketing system Specialist resources Lecture theatre AV Sitemap Frequently asked questions Roles and responsibilities Overview People History Information for staff Overview Accounting Parking Cycling Departmental policies Information for hosts of visitors Meeting rooms Personnel information Reception Staff training Stores UROP internships Wiseman prize Health and safety Overview Emergency First aid General health and safety Environment Fitness H&S policies & committees Risk assessment Laser safety Useful links Index of Health & Safety pages Committee PhD resources Overview Induction PhD supervisors Graduate Advisers CPGS First Year Report: PhD Proposal Second Year Report: Dissertation Schedule Third Year Report: Progress Statement Fourth Year Report: the last year Papers and conferences Writing up Thesis formatting Submitting your dissertation Exemption from University Composition Fees Leave to work away, holidays and intermission Researcher Development Application deadlines List of PhD thesis Graduate Students' Forum PAT, recycling and Building Services Typographic resources Overview Thesis formatting Preparing Tripos exam questions in LaTeX Teaching resources Overview Information for CST examiners Information for Directors of Studies ACS module definition Providing advice to incoming ACS students ACS interviewing and admissions Outreach material Committees Overview Faculty Board Degree Committee Graduate Education Tripos Management Outreach Health & Safety IT Strategy Equality and Diversity Research Staff Staff–Student Directors of Studies Workload Wellbeing Graduate Students Ethics Buildings and Environment Selection External Discontinued committees William Gates Building Overview Building Services Access and security Care of the WGB Facilities in offices Energy & Environment Meeting rooms Stores West Cambridge Site Leaving the department Course pages 2020–21 Concurrent and Distributed Systems Syllabus Course materials Recordings Information for supervisors Concurrency Lectures Lectures 1 to 8 are given by Dr DJ Greaves. All lectures are pre-recorded this year. Please look under the 'Recordings' tab. The audio content for the lecture videos, especially the first few, is very slowly spoken and monotonous. It is recommended that you replay them faster than real time in the first instance, such as 1.1x or so. And of course, pause as you need to. If you use mplayer, then the '[' and ']' keys are your friends. For the first 8 sessions, assistance from the lecturer is likely to be available during the timetabled slot, starting at around 30 minutes past the hour. When a help session with the lecturer is currently available and active, the zoom link for the session, for local access only, will be HERE. (You may need reload/F5.) Primary Resources Lecture slides: PDF. Errata: L2: Assignment operator was missing from Bakery assignment of false to Enter[tid]. L2: half-coupled and fully-coupled asynchronous product both had arcs missing, so B0 is not finally a deadlock state. Learners' Guide: LINK Preliminary Exercises: Sheet 0. Main Exercise Sheets: Sheet 1 Sheet 2. Useful article on Java Concurrency Primitives: LINK. Robert Watson's Java Concurrency Exercises: LINK (link broken). Supervisors' Guide: See supervisors' area. CBMC Model checker example demo: LINK (being updated Nov 2020). Advanced Resources For those with greater interest: Two nice diagrams (thanks to Jasmin Jahic) that might be handy for supervision discussion: and Detailed example of interrupt service routine: sp1-socparts. Are SSD disk writes really atomic?. Sources for real-world implementation of pthreads and condition variables condition variables. Deadlock detection in AND-OR wait-for graphs: link missing. Multicore CPUs without shared memory and with message passing hardware are marketed by companies such as XMOS. Free BSD WITNESS: LINK. Distributed Systems Lectures 9 to 16 are given by Dr Martin Kleppmann. Lecture notes (PDF) (including exercises) Slides: slideshow and printable (PDF) Lecture videos: on YouTube (publicly available) or mp4 files (Raven login required) All lectures are now available. Errata Since going to print, the following updates have been made in the latest version of the lecture notes: Added the last two lectures Clarified that Raft provides FIFO-total order broadcast (not just total order broadcast), provided that when a follower sends a broadcast request to the leader, this is done via a FIFO link Clarified that Raft's timeout for detecting leader failure is randomised, to reduce the probability of several nodes becoming candidates concurrently Added a link to a visualisation of Raft Changed notation "set x = v1" to "set(x, v1)" and "read x" to "get(x)" for consistency with later sections On Raft slide 6, fixed the logic for updating currentRole and currentLeader (thank you to Rishabh Jain for reporting the mistake) On Raft slide 8, line 3, changed the condition "success = true" to "success = true ∧ ack ≥ ackedLength[follower]" On Slide 97 ("Read-after-write consistency"), changed "client does not read back the value it has read" to "client does not read back the value it has written" Last year’s course materials are still available. Instructions for lecturers: how to edit this page © 2021 Department of Computer Science and Technology, University of Cambridge Information provided by Dr David Greaves University A-Z Contact the University Accessibility Freedom of information Terms and conditions Study at Cambridge Undergraduate Graduate International students Continuing education Executive and professional education Courses in education About the University How the University and Colleges work Visiting the University Map News Events Jobs Give to Cambridge Research at Cambridge News Features Discussion Spotlight on... About research at Cambridge