Dr Odinaldo Rodrigues

Welcome to my web page

I am a member of the Software Modelling and Applied Logic group in the Department of Informatics at King's College London

My research concentrates mainly in the area of Artificial Intelligence, more specifically in the formalisation of the common-sense reasoning, non-monotonic reasoning, and numerical aspects of argumentation.

For further information about my academic activities at King's, some references to my research work and how to get in touch with me, please use the links on the menu.

Thank you for your visit!

Research interests

My research interests currently revolve around aspects related to Artificial Intelligence, especially in all aspects of the formalisation of common-sense reasoning. These include belief revision, abduction, argumentation theory, machine learning, probabilistic reasoning and non-monotonic reasoning in general.

I work both with the theoretical aspects AI, e.g., foundations of AI, translations between logical systems, belief revision in non-classical logics, merging of argumentation systems, as well as with the application of AI in computer science, including optmisation techniques for requirements engineering, implementation of non-monotonic reasoning systems, BDI systems, concept classification, computation of semantics of argumentation systems, and the like.

The main areas of research interest are summarised below:

Artificial Intelligence

  • Knowledge representation
  • Numerical methods of reasoning
  • Agent systems
  • BDI reasoning
  • Optimisation, searching, etc

Formalisation of the common-sense reasoning

  • Non-monotonic reasoning
  • Belief revision
  • Database updates
  • Argumentation theory
  • Voting problems and preference aggregation
  • Abduction

Recent PC membership

  • COMMA, 2016 - Programme Committee member
  • KR, 2016 - Programme Committee member
  • ECAI, 2016 - Programme Committee member
  • IJCAI, 2015 - Senior Programme Committee member
  • AAAI, 2016 - Programme Committee member
  • TAFA, 2015 - Programme Committee member

Other activities

Teaching

I have taught several modules at BSc and MSc level including:

  • Data Structures and their Implementation in C++ (1999 and 2000)
  • Computational Logic (2001)
  • Database Systems (1999 to 2002)
  • Artificial Intelligence (2002 and 2007)
  • Conceptual Analysis (2003 and 2004)
  • Internet Systems (2005 and 2006)
  • Distributed Systems (2006 and 2007)
  • Computer Science Logic (2008)

Current modules

Selected publications

Short Biography

Although my research is mostly theoretical I have always had a keen interest in the most practical implementation aspects. Computing, and consequently technology, is both my passion and my natural element. This has been the case throughout my life.

I started programming when I was very young (at around 15yo) in the days when a personal computer consisted of a TV attached to an 8-bit "computer" and programs were saved to cassete tapes. You could actually hear the phone ring and the modem tick when you wanted to connect to a remote server. In those days very little support was available to a programmer. BASIC was the most common language keen teenagers like me would use with their computers, but some things we had to do in assembler, a very rudimentary form of machine language. Then PCs came along, programming languages improved (we had Turbo Pascal, then Delphi), and commercial opportunities to make a living out of programming started to become more widespread beyond the realm of mainframes and dumb terminals. That's when a few of us at the University of Fortaleza, myself included, started opening companies and writing software professionally. I remember the first POS system I wrote, where I even had to implement a rudimentary locking mechanism myself to avoid the lost update problem, common in database systems. No database servers were available at the consumer level and only big organisations could afford them, but smaller businesses were seeing the potential for automating some core activities, such as sales, stock control, and reporting, and a few others needed the flexibility and speed that a computer could offer, for instance when calculating the forces applied to a structure supporting a roof. These were the types of problems that spurred my curiosity as a teenager. But if we could solve those problems with a computer, could a machine actually think, or at least behave as if it could?

I quickly realised that I needed to study more, so I applied for a MSc in Artificial Intelligence at COPPE, in the Federal University of Rio de Janeiro, some 3000km away from the city I lived in. The masters then led me to a PhD in Artificial Intelligence, this time even farther away at Imperial College London, 9000km away from Rio.

My first job after my PhD was as Research Assistant in a project involving the development of data-driven algorithms for artificial intelligence. In retrospect, that project was very ahead of its time in 1998.

I am currently Senior Lecturer at King's College London and have taught thousands of students in most of the core computing disciplines: database systems, distributed systems, C++ programming, computational logic, internet systems, artificial language, classical logic, and the like.

I have had a wide variety of administrative duties including publications and publicity, MSc admissions, and more recently I have been chairing the Computing Committee, initially for the Department of Informatics and in the last few years for the whole Faculty of Natural and Mathematical Sciences. Throughout this period, we have seen good progress and exciting new things hapenning at King's, including the inception of HPC facilities such as ADA and Rosalind.

In recent years, my research has veered towards the more practical aspects of common-sense reasoning, particularly in the area of argumentation theory. From dialogues to semantics, including devising numerical methods for argumentation systems and investigating all aspects related to their implementation.

Last year I submitted the prototype of a numerical solver to the first International Competition on Computational Models of Argumentation called GRIS based on theoretical research I had done on numerical argumentation. The prototype showed potential and I have since been working towards implementing a more robust solver called EqArgSolver. The significance of an argumentation solver such as EqArgSolver is that, unlike in reduction-based solvers, it operates on the argumentation graph directly. This puts it in a more robust position to tackle future argumentation problems that may not be possible to solve using reduction-based solvers.

EqArgSolver is not yet ready for general release, but following recent theoretical work, I have implemented a faster core component to replace GRIS' and the development version has already shown up to 12x increase in performance in comparison to GRIS. I have presented these developments in the recent SAFA workshop co-located with COMMA 16. Before EqArgSolver is ready for the next ICCMA, a new key algorithm needs to be developed and shown to be correct before its subsequent implementation. This is currently under way.

GRIS & EqArgSolver

Computation of Argumentation Semantics

The Gabbay-Rodrigues Iterative Solver (GRIS) is a lightweight prototype solver written in C++ that can be used to compute solutions to argumentation problems in the grounded and preferred semantics.

GRIS can be used to compute extensions as well as to provide answers to acceptability of arguments in one or all of the extensions under one of these two semantics.

GRIS is being superseded by EqArgSolver [4] which is up to 12x faster. EqArgSolver will be available for general release in early 2017. Please check this page for announcements.

GRIS can be downloaded from here.

Research projects

  • EPSRC grant number EP/E034446/1, Connections between belief revision, belief merging and voting, 2006
  • EPSRC grant number GR/R44706/01, Belief Contraction and Anti-Formulae. Logical Modelling of Deletion, 2002-2005

BSc projects

I prefer to supervise students in emerging topics or in an area related to my research interests.

I am only willing to supervise projects that attempt to improve your overall design, reasoning and programming skills. My project topic suggestions may appear demanding, but they are tailored to maximise your professional development and I will assist you throughout the development.

I may also be willing to supervise your own project in another area of computer science provided that

  • the topic of the project is interesting and involves more than basic programming, use of web technologies, and/or the implementaion of a mobile application;
  • the proposal suggests an innovative approach to a particular computer science problem; and
  • you are willing to work hard on it.

Topics suggestions for 2016/2017

WARNING: this list may contain more topics than I am able to supervise.
  1. [OR-1] Point-to-point directions in built-up areas

    The objective of this project is to write an Android app for providing turn by turn directions on how to get from a designated origin to a target location in a built-up area such as the Strand Campus.

    The idea is to be general, having an area specification language with associated directions between main locations which then are applied to a specific site.

    As an example, to provide directions for going from Office S1.26 to Room K1.28, one could explicitly code the directions between S1.26 and K1.28 or have generic rules that identify S1.26 as being in the Strand Building and K1.28 in the King's building and then have directions from going to one building to the other combined with more specific information about the exact locations.

    • Depending on how generic and smart your code is most locations could be covered, but one can limit the scope by reducing the allowed locations.
    • You can enhance this idea in many different ways as you wish.

    You could the release this app for free in Google Play to help newcomers find their way around in the maze that this campus is.

    You need good general programming skills to successfully deploy this application and willingness to work hard on it.


  2. [OR-2] An automatic natural deduction proof checker for propositional logic.

    Given a set of natural deduction rules, a set of premises, a conclusion and a proof in a pre-defined format, your tool should be able to tell whether the proof is correct or not.

    Your tool should be easy to use and accept proofs from a web interface or input file, convert the proof to an internal language and check whether the proof is correct indicating any wrong steps in the proof.

    Applications

    Your tool will help logic students to learn natural deduction.

    Skills required

    • A good understanding of logic and propositional logic
    • Basic computing skills: data structures, web interfaces, etc
    • JAVA
  3. [OR-3] Computing argumentation semantics

    An Abstract Argumentation Framework is a tuple , where A is a set of arguments and R is an attack relation on A x A. Argumentation theory provides a means of deciding which arguments win based on the attack relationship of these arguments. An extension is the set of winning arguments under a particular semantics.

    Deciding whether a subset of A is an extension of an argumentation framework is a complex problem.

    The objective of this project is to explore this problem as much as possible and come up with an efficient implementation to check whether a given set is an extension of an argumentation framework and/or calculate all extensions of such a framework.

    We are not concerned with the visualisation of the graphs which will be performed by an external application (see project [OR-4] below.

    Skills required

    • basic computer science concepts: graphs, graph traversal, algorithms
    • interface and integration of system components
    • JAVA or C++
  4. [OR-4] A graph visualisation tool for argumentation frameworks

    An Abstract Argumentation Framework is a tuple , where A is a set of arguments and R is an attack relation on A x A. Argumentation theory provides a means of deciding which arguments win based on the attack relationship of these arguments. An extension is the set of winning arguments under a particular semantics.

    The objective of this project is to develop a sophisticated application for graph visualisation to aid in reasoning problems in argumentation theory.

    Skills required

    • basic computer science concepts: graphs, graph traversal, algorithms
    • interface and integration of system components
    • JAVA or C++

MSc projects

I prefer to supervise students in emerging topics or in an area related to my research interests.

I am only willing to supervise projects that attempt to improve your overall design, reasoning and programming skills. My project topic suggestions may appear demanding, but they are tailored to maximise your professional development and I will assist you throughout the development.

Topics suggestions for 2016/2017

  • [OR-M1] Computing argumentation semantics

    An Abstract Argumentation Framework is a tuple , where A is a set of arguments and R is an attack relation on A x A. Argumentation theory provides a means of deciding which arguments win based on the attack relationship of these arguments. An extension is the set of winning arguments under a particular semantics.

    Deciding whether a subset of A is an extension of an argumentation framework under a particular semantics is a complex problem.

    The objective of this project is to explore this problem as much as possible and come up with a portable (JAVA) implementation to check whether a given set is an extension of an argumentation framework and/or calculate all extensions of such a framework. At least two semantics must be used.

    We are not concerned with the visualisation of the graphs which will be performed by an external application (see project [OR-4] below.

    Skills required

    • Basic computer science concepts: graphs, graph traversal, algorithms
    • Interface and integration of system components
    • Knowledge of JAVA
  • [OR-M2] Evaluation of Algorithms for the Computation of the Preferred Semantics

    Argumentation theory provides a means of deciding which arguments win based on the attack relationship of these arguments. An extension is the set of winning arguments under a particular semantics. An Abstract Argumentation Framework is a tuple , where S is a set of arguments and R is an attack relation on S x S.

    Deciding whether a subset of A is an extension of an argumentation framework can be a computationally complex problem.

    The objective of this project is to implement alternative algorithms for the computation of the preferred extensions of an argumentation framework and compare their performance. The implementation may or may not use decomposition techniques, but must implement at least two alternative algorithms and provide a thorough comparison between them.

    There is scope for doing some of the computations in parallel if a decomposition approach is used. The project will attempt to do this as an advanced optional feature

    We are not concerned with the visualisation of the graphs which will be performed by an external application.

    Skills required

    • Basic computer science concepts: graphs, algorithms, parallel algorithms.
    • Interface and integration of system components
    • JAVA or C++

Trivia

Things I like to do

  • Write a bit of code: JAVA, C++, PHP, HTML, etc.
  • Play with my camera
  • Read books and stuff
  • Drink a lot of coffee
  • Fix the world
  • Learn about technology
  • Ride my bike
  • Travel the world
  • Maths and computing

Office hours (First term 2016/2017)

  • Mondays 1pm-2pm, Strand Building, various locations, please check KEATS under 4CCS1ELA
  • Thursdays 2pm-3pm, Strand Building, various locations, please check KEATS under 4CCS1ELA
You do not need to e-mail me for an appointment to see during office hours.

Contact details

Dr. Odinaldo Rodrigues
King's College London
Department of Informatics
London, WC2R 2LS, UK
e-mail: odinaldo.rodrigues@kcl.ac.uk
Tel.: +44 20 7848 2087
Fax: +44 20 7848 2851
Office: Strand Building, S1.19