Skip to main content

Clack is a Professor at University College London (UCL), where he has been involved in undergraduate and postgraduate teaching for over 30 years.

  • Teaching Overview

    Current taught modules:

    Supervisor for student projects:  (see main topic "Student Projects" below for project suggestions)

    • 2022-2023
      • Undergraduate:  Ansar Choudhury, Passawis Chaiyapattanaporn
    • 2021-2022
      • Undergraduate: Ali Ghariani
      • Postgraduate: Yiming Dai, Ece Holat, Fran Liu, Xingyu Mu, Giancarlo Salirrosas Martinez, Asif Shakil
    • 2020-2021
      • Undergraduate:Jiayi Chen, Simon Fattal
      • Postgraduate:  Gordon Cho, Hamza Chaudhry, Siyuan Liang, Piotr Moren, Lehui Ma, Alvaro De La Vega
    • 2019-2020
      • Postgraduate: Tianci Cai, Ioanna Charalambous, Adir Saly Kaufmann

    Personal Tutor to:

    • 2022-2023
      • Aaneel Bin Srazali, Aashish Agarwal, Alex Saubestre, Ansar Choudhury, Arei Mohammed, Arjun Bahra, Arran Clark, Ofir Francis, Passawis Chaiyapattanaporn, Satchee Lad, Shubai Yu, Siyi Wang
    • 2021-2022
      • Luis Ontaneda Mijares, Sachi Lad, Ali Ghariani, Ruiyi Zhou, Henry Walton, Antreas Michael, Hugo McLaughlin, Aaneel Bin Srazali, Ofir Francis, Qiwen Lin
    • 2020-2021
      • Jiayi Chen, Xinyi Liu, Simon Fattal, Yihang Li, James Hennessy, Joseph George, Lehui Ma, Naiwen Tian, Giorgia Chillon, Melanie Chen
    • 2019-2020
      • Sean Brown, Simon Sive, Louyu Zhang, Yuexi Fang, Yutong Guo, Gaoyuan Wu, Carlton Ji (Y3), Yihang Li (Y4), Ioan-Bogdan Nitescu (Y4), Mingyi Lim (Y3)

    Administrative role:   Postgraduate Tutor (2020-)

    Text books: Co-author of three text books, all published by Prentice Hall but now out of print. The English version of the Miranda book can however be downloaded by following the link (the copyright has reverted to the author).

    Office hours: Arranged privately with tutees.

  • Postgraduate Tutor (UCL Computer Science)

    The Postgraduate Tutor in the Department of Computer Science at UCL facilitates interaction between the MSc Programme Directors and encourages the sharing of best practice and solutions to common teaching issues.  The MSc Programmes currently active (as of January 2021) are:

    Artificial Intelligence for Health

    Artificial Intelligence for Sustainability

    Computational Finance

    Computational Statistics and Machine Learning   

    Computer Graphics, Vision and Imaging

    Computer Science

    Data Science (International)

    Data Science and Machine Learning

    Disability, Design and Innovation

    Emerging Digital Technologies

    Financial Risk Management

    Financial Technologies

    Information Security

    Machine Learning

    Robotics and Computation

    Robotics (from 2024)

    Sensor Systems

    Software Systems Engineering

  • Student Projects

    Suggestions for the Academic Years 2023-2024 and 2024-2025:

    Smart Contracts are currently a hot topic, including both Blockchain-based and non-Blockchain-based Smart Contracts. I supervise projects in the research area of Smart Legal Contracts, as used for example to automate the performance of legal (especially commercial) contracts.  "Computable Contracts" are a particular way to write Smart Legal Contracts using a Domain Specific Language that also looks like Natural Language (e.g. English, as used by lawyers in drafting contracts).

    Several student project reports are available on this page (see "Past Projects").

    If interested in any of the following, send an email to:  . After an initial Q&A, we would then meet to discuss what other students have done previously and how your project might contribute to this work.  The following descriptions are slightly out of date, so some discussion will definitely be worthwhile!

      • Analyse Smart Contract code development for different Blockchain architectures.
        • Individual Project - could be run as a group (without inter-dependencies) with each working on a different Blockchain architecture. 
        • Background - we aim to automate complex legal agreements, especially financial contracts such as Interest Rate Swaps, and Blockchain-based cntracts such as trading Non-Fungible Tokens: "Smart Legal Contracts".  Often the desire is for this to be achieved by "smart contract" code running on a Blockchain.  Unfortunately different Blockchain architectures implement smart contract code in different ways, and it is not clear how they differ in detail (e.g. in terms of deterministic outcomes).
        • Description - analyse at least one, preferably two, and maybe three different Blockchain architectures and how they implement smart contract code.  For each such Blockchain architecture (e.g. Ethereum, Hyperledger, Corda), preferably develop a formal description of how the smart contract code to automate a contract will be run on that Blockchain.  This could for example be expressed as a formal Operational Semantics where logical statements are made about the execution and procedures of the system so that properties of the system (such as correctness, determinacy, etc) could be determined by constructing proofs over those logical statements.  The project does not include constructing proofs - just constructing the logical statements about the system, and how those statements are interconnected.  Other approaches are also possible: for example a less formal approach would explore limitations and idiosyncracies (eg ease of deployment, ease of coding, oracle architecture and ease of use, achieving workflow and temporal sequencing, ability to respond to external events).  This project might optionally involve deploying a private blockchain, writing smart contract code to test how a Blockchain system works when executing that code.
        • Skills required -  A strongly logical analytical and flexible mind, intellectual initiative, a good understanding of Blockchain architecture and how Blockchain "smart contracts" work.  Preferably, an understanding of distributed systems and formal descriptions of computer systems.  Optionally, programming skills in a language for Blockchain smart contracts (eg Solidity).
      • Workflows, Analysis and Code for Smart Legal Contracts
        • Individual Project - could be undertaken by more than one student concurrently (working on different sources).
        • Background: The automation of complex legal agreements, especially financial contracts such as Interest Rate Swaps, and Blockchain-based contracts such as trading Non-Fungible Tokens: "Smart Legal Contracts".
        • Description:  Analyse some or all of a complex legal agreement for a financial product, to determine which parts could be automated (either on a Blockchain or otherwise), to determine relevant events and workflows, to assess possible inconsistencies or incompleteness, and to derive pseudo-code for automation.  Optionally also to convert the pseudo code into smart contract code (eg using Solidity).
        • Skills required:  An understanding of financial products, a strongly logical analytical and flexible mind, intellectual initiative, programming skills in any general-purpose programming language (e.g. Python, C++, Java, Haskell, OCAML), a basic understanding of Blockchain architecture and how Blockchain "smart contracts" work. Optionally, programming skills in a language for Blockchain smart contracts (eg Solidity).
      • A Domain-Specific Language for Drafting Smart Legal Contracts.

        • Individual Project - could be run as a group (without inter-dependencies) with each working on a different approach.
        • Background: The automation (eg via Blockchain) of complex legal agreements requires lawyers to draft contracts in a way that is understandable by computers/programmers.  One way to do this is to design a new programming language that looks like English (a "controlled natural language").  The aim is to provide (i) analysis of contracts and (ii) a route to automation as Blockchain smart contract code. Both Logical English ( and Lexon ( are good examples but (i) what are their limitations? and (ii) can we do better?   This will build on the work of other researchers and previous students.
        • Description: Either
          (1) Analyse the language "Logical English" (LE) or the language "Lexon", or both (a comparative study) - establishing how the language should be tested, learning to program and create contracts using LE, running tests, generating code, and evaluating the language - either in a Blockchain context, or non-Blockchain, or both. Or
          (2) Either by creating significant extensions to an existing system, or forging a new path, create a lexer and parser that can read in a contract written in the new language and turn it into an internal data structure (often called a "parse tree"). Then either (i) design & write code for analytics to be run on a contract (eg for inconsistency or conflicts) or (ii) design & write code to generate output code that will automate some designated parts of the contract, or (iii) design and implement a user interface so that lawyers can easily draft new contracts (similar to a programming "Integrated Development Environment"). 
        • Skills required:  An interest in how lawyers think and express themselves when drafting agreements, a strongly logical analytical and flexible mind, intellectual initiative, programming skills in any general-purpose programming language (e.g. Python, C++, Java, Haskell, OOCAML), an ability to download install and learn to use open-source software packages.  For outputting code, optionally an ability to program in a language for smart contract code such as Solidity.
      • Temporal Semantics of Smart Contracts: continue and extend previous work that has captured the requirements for describing the temporal aspects of legal documentation. The previous work on requirements needs to be extended to provide (i) formal representations of time objects, (ii) a formal definition of for each kind of time object to state what it means, (iii) a set of operators that can be applied to time objects, defining the properties of those operators (eg commutative? associative?), and a definition of the meaning of the output of each operator, and (iv) a comparison with existing semantics/logics. There is scope to implement this work as a prototype so that its operation can be validated.
  • Past Projects

    The following is a limited selection of previously supervised student projects, with links to their dissertations where available.

    Smart and Computable Contracts

          1. [LINGUISTICS COURSEWORK - not a project] What are the pragmatic challenges to the semantics of contract automation? (Suzanne Huldt, MRes Speech Language and Cognition 2017, Distinction) (link)
          2. The Semantics of Smart Contracts used in Banking and Financial Services (Gabriel Vanca, BSc Computer Science 2018, Distinction) (link)
          3. Representing the Temporal Semantics of Financial Derivatives Contracts (Varun Mathur, MEng Computer Science 2019, Distinction) (link)
          4. Computable Contracting and Contract Theory (Sajjandeep Sivia, BASc Arts and Sciences 2021, Merit) (link)
          5. CoLa: A Controlled Natural Language for Computable Contracting (Simon Fattal, MEng Computer Science 2021, Distinction) (link)
          6. A Digital Contract Model Representing Smart Computable Contracts as Petri Nets using Controlled Natural Language (Dominic Kloecker, MSc Computer Science 2023) (link)
          7. A Controlled Natural Language for Addressing the Problem of Vagueness in Commercial Contracts (Katherine Sparks, MSc Computer Science, 2023) (link)
          8. Streamlining Derivative Trading: Enhanced Liquidity and Risk Mitigation with Blockchain-based Tokenised Collateral Management (Vincenzo Incutti, MSc Financial Technology, 2023) (link)
          9. Smart Confirmation Contracts: An Architecture for ISDA Smart Contracts (Finn Casey-Fierro, MSc Computational Finance, 2023) (link)



        1. Profitable, Return-Enhancing Portfolio Adjustments - An Application of Genetic Programming with Constrained Syntactic Structure (Wei Yan, MScCS 2003, Distinction) (link to Wei's project report)
        2. Are Genetic Algorithms and Genetic Programming suited to incremental learning? (David Koo, 3rdyr 2004)
        3. An investigation into the application of a continuous learning strategy to the use of GA techniques for trading Portfolio Optimisation (Lisa Billet, MScIS 2004)(link to Lisa's project report)
        4. Dynamic Optimisation of Technical Trading Rules Using Genetic Programming (Thomas Graham, MScIS 2004) (link to Tom's project report)
        5. Cytoskeleton Simulation applied in financial portfolio optimisation (Bo Zhang, MScCS 2005) (link to Bo's project report)
        6. Financial portfolio optimisation (Nicky Tsang, BSc 2005) (link to Nicky's project report)
        7. Financial portfolio optimisation (Fuad Sulejmanovic, MSci 2005) (link to Fuad's project report)
        8. Venture Analytics Web Application (Michael Le, MSci 2006) (link to Michael's project report)
        9. FTSE 100 Price Prediction with a multi-factor model using Genetic Programming (Harjinder Bagria, BSc 2006) (link to Harjinder's project report) (User Manual) (System Manual) (Test Results) (Stocks) (Code Archive) (Data Archive) (data file manager)
        10. Using an agent-based simulation to explore hedging pressure in futures markets (Jonathan Duke, MSc IS 2006)
        11. A Study of Linkage Identification in Financial Time Series Analysis (Theodore Chiotis, MSc IS 2006)
        12. GP portfolio optimisation (Yaning Liu, MSc CS 2006)
        13. GP based options pricing (Faisal Muhammed, MSc CS 2006)
        14. GP Portfolio optimisation (Nick Watson, MSc CS 2006)
        15. Effects of combining ALPS and SPEA2 genetic programing algorithms in a portfolio optimization problem, (Khalid Al-Abid, MScIS 2007);
        16. Hedging pressure in futures markets (Carl Aranjo, BSc 2007)
        17. Research infrastructure for parallel GP system experiments in portfolio optimisation, (Ali Adeli, BSc 2007);
        18. GP prediction of American Options Bid-Offer spreads (Jignesh Halai, BSc 2007)
        19. VaR optimisation using Genetic Programming (Sunpreet Grewal, MSci 2007)
        20. Comparison of GP diversity preservation mechanisms for non-linear portfolio optimisation (Suneer Patel, MSci 2007)
        21. GP prediction of American Options Bid-Offer spreads (Amy Willis, MSci 2007)
        22. Credit Derivatives - Pricing and Bootstrapping, (Mi Sun, MScFC 2009-2010, Distinction);
        23. Release Builder: Automating Code Build and Deployment for Large Software Projects, (Lemin Li, MScFC 2009-2010, Distinction);
        24. An Agent-Based Simulation of Trader Behaviour in Modelling Emergent Phenomena in Stock Market, (Teng Jiang, MScFC 2010-2011, Distinction);
        25. Novel Order Book Rules to Promote Trading System Price Stability, (Lingcen Huang, MScFC 2010-2011, Distinction).
        26. Modeling the Financial Markets, (Peter Hilton, MScCS 2012, Distinction);
        27. Eugene: Agent-Based Market Simulator for use in Validation and System Testing of Trading Algorithms, (Jakub Kozlowski, MEng 2012, Distinction, IBM Prize);
        28. The Stochastic Pi-Machine and Finance, (Gernot Roetzer, MScCS 2012, Distinction);
        29. Interference and interaction between trading algorithms, (Andrei Airimitoaie, BSc 2012);
        30. Simulating Interaction in Financial Markets, (Vikram Bakshi, MScCS 2015, Distinction).

    Life Sciences

        1. Drug Patient Database (Sameera Waheed, MScCS 1994)
        2. ECOSERVER (a website where users can request information from a data structure, written in a functional language, capable of producing web pages to display that information dynamically) (Andrew Oldfield, MScCS 1995)
        3. Design and Implementation of a Java Application for Interactive Manipulation of Protein Sequence Alignments (Cleopatra Karapanagioti, MScCS 1998)
        4. Learning algorithms applied to Malaria diagnosis (Clarence Sittampalam, MScCS 2004)
        5. Simulation of cancer tumour therapy using agent-based programming and a cellular automaton (Mo Radif, BSc 2005) (link to Mo's project report)
        6. Simulation of Cancer Tumour Therapy by Using Agent-Based Modelling, (Anastasia Semenova, MSci, 2005) (link to doc file)(link to pdf file)
        7. Modelling the movement of antibodies towards the tumour in Cancer Chemotherapy. (Chih-Chun Chen, MScCS 2005) (link to Chih-Chun's project report).

    Business and underlying technology

        1. Development of a Prototype Intelligent Browsing System utilising Boolean Query Generation using Genetic Programming (Dan Morrison, MScCS 1994)
        2. Introducing GPMail - A Personalised Email Agent Using Genetic Programming (Youssef Lababidi, MScCS 1996)
        3. GUESS: An Adaptive Genetically-Programmed E-mail Assistant written in Haskell (Dzofrain Azmi, MScIT 1996)
        4. Optimisation of Sainsbury's Stock Control Data (Daniel Shaya, MScCS 1996)
        5. Adaptive e-mail classification and routing, a UCL implementation using Genetic Programming (Jude Umeh, MScCS 1997, Pass)
        6. A Natural Selection Solution to a Complete Problem (Steve Evans, MScCS 1998)
        7. Supply Chain Scheduling using a genetic algorithm (Prajesh Patel, MScCS 2000)
        8. Supply Chain Scheduling Using a Genetic Algorithm (Jaspal Gill, MScCS 2000)
        9. Electronic Mail Filtering Using Genetic Algorithms (Smeeta Sharma, MScIT 2003)
        10. The Spam Filter System (Amit Sharma, MScCS 2003)
        11. A Feasibility Study of a Novel Adaptive Memory Management System (Idris Drief, MScIT 2003)
        12. Selective Crossover Using Gene Dominance as an Adaptive Strategy for Genetic Programming (Chi Yuen, MScIS 2004) (link to Chi's project report)

    Memory Management

        1. A Simulation Study of an Exact-Fit, Peer-Group Memory Allocator (Sundeep Kooner, MScCS 2000)
        2. A Feasibility Study of a Novel Adaptive Memory Management System (Idris Drief, MScIT 2003)
        3. Co-evolution of Worst-Case Optimal Memory Management Policies (David Coffin, MScCEugeneS 2004)
        4. An Investigation into the fragmentation performance of the Symbian Operating System memory allocator, and a critical assessment of the extensibility of the allocator framework (Dan Kolb, MScCS 2004, Distinction) (Link to Dan's project report)

    Functional Programming

        1. GRIP Performance Monitoring (Perminder Thandi, MScCS 1988)
        2. High Bandwidth Parallel Interface between GRIP and an HLH Orion (Peter Traps, MScCS 1989)
        3. Functional Image Processing (Chung Wing Man, 3rdyr 1990)
        4. A DIGRESS SYstem Profile Display Tool (Bruce Attah, MScCS 1993)
        5. Haskell Core to FLIC Compiler (Sapna Patel, MScCS 1994)
        6. Feasibility study into the implementation of the nuG machine on the DIGRESS system (Steven Crossan, MScCS 1994)
        7. A CORE Compiler (Alexandra Crouch, MScCS 1994)
        8. ECOSERVER (a website where users can request information from a data structure, written in a functional language, capable of producing web pages to display that information dynamically) (Andrew Oldfield, MScCS 1995)
        9. GUESS: An Adaptive Genetically-Programmed E-mail Assistant written in Haskell (Dzofrain Azmi, MScIT 1996)
        10. Feasibility Study: Incorporating Lexical Profiling into the Glasgow Haskell Compiler (Tina Callaghan, MScCS 1996)
        11. Miranda Functional Spreadsheet (Yat Sun NG, 3rdyr 1997)
        12. Analysis and research into errors produced while compiling a Miranda program and examining how these errors can be resolved, (Patrick Kielty, 3rdyr BSc 1997);
        13. CLOVER Spreadsheet Editor (Sieu Ngu, 3rdyr 1997)
        14. A Teaching Program for the Lambda Calculus (Ekaterini Metallinou, MScIT 2003)


      1. Multi-User Diagram-Editor (Eli Kalati, 3rdyr 1991)
      2. Distributed UNIX Booking System (Lotfi Berrada, MScCS 1993)
      3. Amanuensis - Indexing with LaTeX (Steven Gould, MScCS 1994)
      4. Access rule-based system for building maintenance (Apostolos Kontogeorgis, 3rdyr 1995)
      5. A Feasibility Study into developing a prototype platform-independent program for remote development of platform-independent code (Micah Levy, 3rdyr, 1996)
      6. The Production of a Data-Flow Diagram Editor Applet for Use in an Application Development Environment (Oliver Wood, MScIT 1996)
      7. Multi-user Spreadsheet Program (Erik Emin, 3rdyr 1998)
      8. Dynamic web application for graphical display of result sets (Claire Worledge, MScIT 2001)
      9. Real-Time Interactive Data Over the Internet (Mark Hilton, MScCS 2001)
      10. A Website that allows Statistical Testing (Sachin Kumar, MScCS 2002)
      11. Camera Support for the Symbian OS Emulator for Windows (Aleem Juma, 3rdyr 2004)
      12. Extreme Tube - A live view of the tube network, using wireless networks (Adnaan Shirazi, 3rdyr 2004)
  • Past modules (no longer taught)
    • COMPG013 - Market Microstructure
    • COMPGF01 - Financial Business Analysis and Project Management
    • COMPGC06 - Database Systems
    • COMP3C13 - Database and Information Management Systems
    • COMPB261 - Systems Architecture
    • COMPB11a - Introductory Programming in Miranda
    • COMPB400 - Introductory Programming in Fortran
    • Complexity and Intractability
  • Past Administrative Roles
    • Affiliate Tutor (2017-2020)
    • Careers Tutor (twice)
    • Founding Director, Financial Computing MSc Programme 2007-2012
    • Admissions Tutor, Financial Computing MSc Programme
    • Admissions Tutor, Computer Science MSc Programme
    • Director, Computer Science MSc Programme
    • Chair of Services Committee
    • Publications and Publicity