Computer Laboratory

Wheeler Lectures

David Wheeler

The “Wheeler Lecture” is an annual series of distinguished lectures named after David Wheeler, one of the early pioneers of Computer Science. It usually takes place on a Wednesday in Lecture Theatre 1 of the William Gates Building.

David worked on the original EDSAC computer and wrote one of the first computer programs to be stored in a computer’s working memory. He pioneered the use of sub-routines and is particularly remembered for his work on data compression.

David Wheeler was elected a Fellow of the Royal Society in 1981, one of the earliest computer scientists to be so honoured. In October 2003, he was made a Fellow of the Computer History Museum for his invention of the closed subroutine, his architectural contributions to the ILLIAC, the Cambridge Ring, and computer testing. David started his PhD in the University of Cambridge’s Computer Laboratory (then the Mathematical Laboratory) in the late 1940s, graduating in 1951. He then spent time at the University of Illinois before returning to the UK. He continued to work in the Computer Laboratory right up until his death, a decade after he had officially retired.

For further information about the Wheeler seminar series contact David Greaves.

Talks@cam entry

2013 – Prof Sir Tony Hoare: Could Computers Understand Their Own Programs?

The Computer Laboratory celebrated its 75th anniversary on Wednesday 24th April, 2013. The annual Wheeler lecture was given that day by Sir Tony Hoare, Emeritus Professor of Computer Science at the University of Oxford, Principal Researcher at Microsoft Research and Honorary Member of the University of Cambridge Computer Laboratory.

Could Computers Understand Their Own Programs? – In summary, my answer to the question is Yes.

In principle, computers could understand their own programs, and those of other computers, although their understanding is rather weak at present. It was Alan Turing who suggested that we can gather evidence of the understanding of computers if we subject them to the same kind of examination that we have inflicted on many generations students at schools and universities. An examination usually requires the student to justify each given answer by logical reasoning. The most rigorous principles of logical reasoning was first formulated by the ancient Greek Philosopher Aristotle; and they were further refined by the ancient Egyptian philosopher Euclid. Finally, Alan Turing also showed that these principles apply equally to logical reasoning about computer programs. Finally, I will suggest how to set the pass mark in the examination. A computer passes the test of understanding if the answers to the questions about its own program are useful to the human software engineer who wrote the program. I hope that one day, computers will pass this test. Then they will be able to serve as intelligent assistants to the programmer during the task of writing the programs.

2012 – Bjarne Stroustrup: C++11 Style

The first Wheeler Lecture was held at the University of Cambridge Computer Laboratory on Wednesday 15 February 2012, at 16:00. The speaker was Bjarne Stroustrup, who talked on C++11 Style:

We know how to write bad code: Litter our programs with casts, macros, pointers, naked new and deletes, and complicated control structures. Alternatively (or in addition), obscure every design decision in a mess of deeply nested abstractions using the latest object-oriented programming and generic programming tricks. For good measure, complicate our algorithms with interesting special cases. Such code is incomprehensible, unmaintainable, usually inefficient, and not uncommon.

But how do we write good code? What principles, techniques, and idioms can we exploit to make it easier to produce quality code? I will make an argument for type-rich interfaces, compact data structures, integrated resource management and error handling, and highly-structured algorithmic code. I will illustrate my ideas and motivate my guidelines with a few idiomatic code examples.

I will use C++11 freely. Examples include auto, general constant expressions, uniform initialization, type aliases, type safe threading, and user-defined literals.

C++ features are only just starting to appear in production compilers, so some of my suggestions have the nature of conjecture. However, developing a "modern style" is essential if we don't want to maintain newly-written 1970s and 1980s style code in 2020.

This presentation reflects my thoughts on what "Modern C++" should mean in the 2010s: a language for programming based on light-weight abstraction with a direct and efficient mapping to hardware, suitable for infrastructure code.

Bjarne Stroustrup is the designer and original implementer of C++ and the author of:

  • Programming—Principles and Practice using C++
  • The C++ Programming Language
  • The Design and Evolution of C++

and many other publications.

His research interests include distributed systems, design, programming techniques, software development tools, and programming languages. He is actively involved in the ANSI/ISO standardization of C++.

Dr. Stroustrup is a Distinguished Professor and holder of the College of Engineering Chair in Computer Science at Texas A&M University. He retains a link with AT&T Labs—Research as an AT&T Fellow. He has received numerous honors, including an honorary professorship in the University of Aarhus, Dr. Dobb's Excellence in Programming award, the William Procter Prize for Scientific Achievement from Sigma Xi, the IEEE Computer Society's Computer Entrepreneur Award, and the ACM Grace Murray Hopper award. He is a member of the National Academy of Engineering and an ACM and IEEE Fellow.

He received his Cand. Scient. (Mathematics and Computer Science) 1975, University of Aarhus Denmark, and Ph.D. (Computer Science) 1979, Cambridge University, England.