Dr Ian Bayley

Senior Lecturer in Computer Science

School of Engineering, Computing and Mathematics

Ian Bayley


I am the Subject Coordinator for all five of our MSc courses: MSc Computing Science, MSc Advanced Computer Science, MSc Computer Science for Cyber Security, MSc Artificial Intelligence and MSc Data Analytics. This means I work with the Programme Lead to help ensure the students have the best experience possible on our programmes.

Areas of expertise

  • software engineering:
    • design patterns
    • web services
  • formal methods
    • model-based specification
    • algebraic specification
  • programming languages
    • object-oriented programming
    • functional programming
    • agent-oriented programming

Teaching and supervision

Modules taught

  • Advanced Object-Oriented Programming:
    How can we design large-scale software in a way that makes change easy to manage. Design patterns are a major part of the answer to this question and they solve other problems too. You also learn in this module how major languages such as Java and C# are evolving over time in order to help you to stay current. This includes topics such as generics, lambda expressions, properties etc. Finally, you will learn about the practices involved in ensuring software meets its specification.
  • Foundations of Artificial Intelligence:
    This module is about the origins of artificial intelligence (AI) and is used on the MSc Artificial Intelligence to give the students the foundation they need for more advanced study later. We specifically consider the tradition within AI of representing explicitly both knowledge about the world and about the rules that can used by rational agents to make decisions; this can be contrasted with machine learning approaches studied elsewhere on the programme. The coursework concentrates on adversarial game playing.
  • Secure Programming:
    You will learn about the fiendish tricks that hackers use to hijack software and gain control of computer systems and then make sure that all the software you work on is free from vulnerabilites. This is an exciting fast evolving field in which there are revelations about new exploits every month. You will learn about many subtleties within C/C++ and the security aspects of, for example, web programming, cryptography, networks, and operating systems including concurrency and access control. I teach both undergraduate and postgraduate versions of this module.


I'm in charge of a number of programming and cybersecurity modules and I have a few ideas for cybersecurity projects.

Research Students

Name Thesis title Completed
Kieren Stanton Studying different technologies for authentication in order to prevent impersonation attacks in vehicular ad hoc networks Active


I do research with Prof Hong Zhu on a wide variety of topics of importance to practical software engineering.

Example of research topics:

  • Software design patterns are widely used in industry to pass on expertise about object-orientation, but can we recognise design patterns in legacy systems and when we compose them together to make larger systems, can we be sure that we have done it correctly?
  • Can we apply the concepts of design patterns to other areas such as security design patterns, which are the practices passed on by security experts to keep computer systems secure? 
  • Microservices are a lightweight container technology commonly used to provide SaaS (software-as-a-service). It seems plausible that agent-orientation, in which we supply behavioural rules to react to changes in the environment, may be a better fit to microservices than object-orientation. Inspired by this, we have devised a programming language for programming microservices. 
  • Algebraic specification of web services enables us to do automated testing using equations instantiated with random inputs instead of having to supply (input, output) pairs as usually required. However, since the testing is done shortly before use by a client that doesn't even own the service, it is not possible to "reset" the service to a prior state as sometimes is needed when testing such equations. How do we solve this problem and still successfully test web services?
  • How can machine learning applications be tested given the inevitable absence of an oracle? One approach is exploratory testing as a means of mapping out the solution space so that the model can be more thoroughly understood.



  • Authentication in VANETs


slide 1 of 6

Professional information


  • PC Co-Chair for COMPSAC SETA 2018

Further details

  • Lecturer at University of Bournemouth