Skip to main content
School of Electronic Engineering and Computer Science

Dr Paulo Oliva


Reader in Mathematical Logic

Telephone: +44 20 7882 5255
Room Number: Peter Landin, CS 421A
Office Hours: Friday 11:00-13:00


I am a computer scientist with a PhD in Theoretical Computer Science. I am currently a Reader in Mathematical Logic, with expertise in System Verification, Game Theory, Formal Logic, and Constructive Mathematics.


Functional Programming (Postgraduate)

Practical introduction to functional programming for students with good programming ability but no prior knowledge of FP

Functional Programming (Undergraduate)

Recent approaches to systems programming frequently involve functional programming either overtly in the sense that they use modern functional programming languages for rapid prototyping, or more covertly in that they use techniques developed in the functional setting as a way of lending greater structure and clarity to code. This module gives a structured introduction to programming in modern industrial functional languages such as Haskell and F# and to techniques such as map-reduce and monadic programming.

Web Programming (Undergraduate)

Many computer systems are now accessed through a web interface. This module provides an in-depth and practical study of techniques for programming the web. Students will become proficient in a modern web development framework using PHP for sever programming and Javascript for client programming. The strengths and weaknesses of the framework are evaluated considering issues including authentication, security, session management, cross languages (PHP, SQL, Javascript) consistency and abstraction of the server-client interface. Different architecture styles are compared, including REST and AJAX and the use of JSON. Techniques for testing and for engineering web systems that behave robustly under high load are also covered.


Research Interests:

My main area of research is in mathematical logic and proof theory. In particular, I am interested in the computational content of mathematical proofs. What do theorems tell us, apart from the truth they convey? How can proofs be viewed as programs, so as to be executed, and how can programs be viewed as proofs, so that their correctness can be automatically checked? These questions become highly non-trivial when proofs involve classical logic, induction and analytical principles such as countable choice and WKL.

Recently, I have also been working on the application of formal verification to the domain of continuous systems. More precisely, developing 'Hoare logic' systems in order to prove properties of systems in the continuous time domain.

My early research career was on the topic of algorithms. That was the time when I was taking part in the ACM ICPC (International Collegiate Programming Challenge). My first paper was on pattern matching algorithms, jointly written with K. Guimaraes and E. W. Myers.


Back to top