Photo of Rudi LutzRudi Lutz

Research

My research has spanned a wide range of topics, most of which fall into one or other of the following areas:

  • Automated Programming and Software Engineering. There have been various aspects to this side of my research:
    • plan recognition in programs, utilising a diagrammatic notation with an axiomatic formal semantics, to enable automatic reasoning about programs in a more human-oriented way.
    • attempting to automatically improve the modular structure of software designs using information-theoretic techniques to make choices between competing alternative designs. Currently, this work uses evolutionary techniques to explore the space of possible designs.
    • reverse engineering of software designs from code, using the above information-theoretic tech-niques to discriminate between alternative proposed descriptions of the software.
  • Programming Environments. I am interested in programming environments, to help reduce the occurrence of errors in programs, and to make it easier for beginners to learn programming. In previous years this has led to my involvement with the POPLOG programming environment, and to my being one of the team which implemented AlphaPop (Pop-11 for the Apple Mac). Recently, I 1 was one of the investigators (together with Pablo Romero, Ben du Boulay, and Richard Cox) on the CRUSADE project, studying how programmers co-ordinate multiple representations and views of programs, and of which representations facilitate this task.
  • Machine learning, especially of language models. My work in this area has largely been with Bill Keller and is concerned with learning language models (e.g. grammars, or Hidden Markov Models) from corpora of sentences, using various techniques (evolutionary, expectation-maximisation).