Curriculum Vitae

  • Developed a new programming language and an associated compiler with features to aid in the correction of programming errors. more ...

    During my PhD I developed a new programming language named Nitro. The purpose of Nitro was to bridge the gap between applications programming languages and the system programming languages that are used to provide the runtime services, such as automatic memory management, for these application languages. To do this Nitro allows the user to not only specify types but how those types are represented in memory. Because such memory representations are formally specified the type-checker can then ensure that they are used correctly. As part of my PhD I developed the language, specified in formally in structural operational semantics, proved some useful properties that the language has, developed a stable compiler for the Nitro language, and used it to write some software such as a text editor which used the NCurses library directly without any need to marshal the native NCurses data types into a Nitro data type.

    less ...
  • High-level problem solving research experience, dependent on the development of software for other users with complex requirements. more ...

    I was involved in the PEPA research group. PEPA is a language for expressing mathematical models of systems, which is used to investigate properties of many different kinds of systems from server-client systems, distributed systems, epidemiology processes, and the modelling of crowds. Bio-PEPA is a varient of PEPA particularly suitable for systems biology modelling. Users typically create a model of the system under investigation and then ask performance related queries such as: What is the average number of waiting customers? or What is the probability that a request has been served within a given time constraint?

    My work was mostly involved in the development of solution techniques and the development of software to realise those solution techniques. In addition I worked on the difficult problem of designing a sound and useful language for the user to specify their query. I also worked on extensions to the modelling languages themselves and techniques to analyse models for modelling errors, in a similar way that static code analysis analyses software code for possible programming errors.

    less ...
  • Developed several individual and team based software projects related to formal analysis of models written in a process algebra which were used by researchers from across the globe.
  • Ability to understand and improve existing software projects. more ...

    I have taken over the development and/or joined the development team on several projects in a variety of programming languages, for example:

    • I took on the development of the Imperial PEPA Compiler written in Haskell and completely revamped the project such that it was re-named the International PEPA compiler and published as library, its source code can be found here.
    • I joined the development teams on both Eclipse plug-ins for the PEPA and Bio-PEPA languages. These projects are written Java and their related source code repositories can be found here and here.
    • I joined the SBSI development team, mostly working on the SBSI-numerics component written in C++.
    less ...
  • An award-winning teacher with a diverse publication record of over 30 articles; a proven track record of understanding and communicating complex concepts and ideas.
  • My goal is to gain further experience outwith the academic realm in which I have already established my career. My passion is for building high quality, intuitive, and robust software; and I wish to join a team that builds software for large and diverse user pool.
  • Python, extensive, preferred language much of the time, 5 years
  • Javascript, Coffeescript, 6 years
  • HTML(5)/CSS, 15 years
  • Java, extensive, including team development, 10 years
  • C, C++, extensive, including team development, 17 years
  • Haskell, extensive, mostly solo, 10 years
  • ML and Ocaml, mostly solo, 15 years
  • Assembly language experience, particularly as part of developing compilers
  • Minor amounts in various other languages on small projects such as C# and .NET bytecode, Erlang, Occam, Fortran, Lisp, my own Nitro language.
  • Transport data, in cooperation with Lothian Buses, analysis wait and expected arrival times and estimates;
  • Systems Biology, many examples, including the Cholesterol pathway and Circadian clocks, parameter estimation for many models, resulting in academic publications;
  • Epidemiology, mostly common SIR (Susceptibles, Infected, and Recovereds) models, resulting in improved understanding of the role of stochasticity in the spread of disease and modelling tools.
  • Sport data; see my blog at
Including language semantics, performance/stochastic modelling.
Including coverage analysis and browser automation for full integration testing of a web service.
A strong knowledge of software development related concepts. Successfully taught at undergraduate and masters levels, topics related to software engineering, agile development and development tools, people and groups, software measurement, and software maintenance.
PhD research saw the creation of a new programming language, Nitro, and development of a Nitro compiler. Worked in a variety of languages, including both statically and dynamically typed languages, imperative, object-oriented and functional languages, low-level systems and high-level application programming languages.
Large amount of autonomy in pursuit of promising areas of research as a post-doctoral researcher within a small team. Taught an important 3rd year course, the Software Engineering Large Practical which I completely redesigned.
Received a EUSA teaching award certifying excellence in communicating feedback — a University wide recognition of ability as a communicator. Communication of technical and complex concepts refined in the role of a lecturer and tutor to Informatics students.
As a Feedback Officer for the School of Informatics improved the quality of feedback given to the students from every course in Informatics. The School has since increased scores for feedback in both internal and external student satisfaction surveys.
Publications record demonstrates international recognition of quality technical written communication as well as innovative research.
  • 2002—2007 PHD, THE UNIVERSITY OF EDINBURGH School of Informatics; Thesis Title: “Abstraction-level Functional Programming”.
  • 1992—1998 Secondary Education, Craigmount High School, Edinburgh.

    I have lectured 4th undergraduate and Masters courses, Distributed Systems and Software Architecture, Process, and Management. Both courses had over 120 students however I engaged well with the students enough to win a Teaching Award for the feedback I gave to students. I have also taught two 3rd year undergraduate courses the Computer Science Large Practical and the Software Engineering Large Practical. Both are core courses for 3rd year students and involve lectures as well as the setting and grading of a substantial individual practical. In addition, I have tutored 1st year students learning to program in Haskell and Java. I have also supervised several students through their Masters or 4th year undergraduate projects, guiding many to first class awards.

    After my teaching award I was appointed as the feedback officer for the school of Informatics with the remit of improving the school's scores for feedback on student surveys, a remit that was achieved every year for which I was the school's feedback officer.

    I was also tasked with the role of personal tutor for approximately 20 students each year. This role, is mostly a pastoral role guiding students through their studies but does involve exercising judgement in suggesting study directions/courses for students.

    Alongside this I continued research as part of the PEPA group and in particular made contributions towards the QUANTICOL project including data collection, analysis and modelling of the City of Edinburgh's bus services. Developing almost exclusively in Python.

    less ...
  • 2010—2012 Post-Doctoral Researcher, School of Informatics/CSBE, the University of Edinburgh. more ...

    Continued my role as a post-doctoral researcher but was now jointly affiliated with the School of Informatics and the Centre for Systems Biology at Edinburgh (which is now a part of SynthSys). This has lead me both to focus more energy on biologically themed models (and their associated solution techniques) as well as become part of a development team for the SBSI software. I was once again developing in Haskell, Python, and Java, but also maintaining legacy C code.

    less ...
  • 2006—2010 Post-Doctoral Researcher, School of Informatics, the University of Edinburgh. more ...

    I became a member of the PEPA modelling research group. PEPA is a language for modelling complex systems and reasoning about their performance (or timing) properties. My research involved developing new solution techniques and new methods to specify the model and importantly the queries of those models. As a part of this I wrote sofware to support these modelling innovations as well as collaborate with others to incorporate their new insights into my software. Developing mostly in Haskell, Java and Python.

    less ...
  • 2002—2006 Student Tutor, the University of Edinburgh. Collaborative work between Schools.
Competent golfer, football player, and a good juggler to maintain a 5-object cascade. A keen interest in psychology and economics. I apply techniques I have learnt from work in quantitative modelling to the art of football prediction, I blog about some of the statistics at the previously mentioned blog:
  • “On verifying Bio-PEPA models”, Allan Clark, Stephen Gilmore, Maria Luisa Guerriero, Peter Kemper, CMSB 2010: 23-32
  • “Verification and Testing of Biological Models”, Allan Clark, Jane Hillston, Stephen Gilmore, Peter Kemper, Winter Simulation Conference 2010: 620-630
  • “Passage-End Analysis”, Allan Clark, Adam Duguid, Stephen Gilmore, EPEW 2009: 110-115
  • “Scalable Analysis of Scalable Systems”, Allan Clark and Stephen Gilmore and Mirco Tribastone, Proceedings International Conference on Fundamental Approaches to Software Engineering (FASE 2009), York, United Kingdom, March 2009
  • “State-aware performance analysis with eXtended Stochastic Probes”, Allan Clark and Stephen Gilmore, In Nigel Thomas and Carlos Juiz, editors, Proceedings of the 5th European Performance Engineering Workshop
  • “Partial evaluation of PEPA models for fluid-flow analysis”, Allan Clark and Adam Duguid and Stephen Gilmore and Mirco Tribastone, In Proceedings of the 5th European Performance Engineering Workshop (EPEW 2008), volume 5261 of LNCS, pages 2-16, Nigel Thomas and Carlos Juiz, editors, Palma de Mallorca,Spain, September 2008. Springer.
  • “Service-level agreements for service-oriented computing”, Allan Clark and Stephen Gilmore and Mirco Tribastone, Proceedings of the 19th International Workshop on Algebraic Development Techniques (WADT 2008), Pisa, Italy, June 2008
  • “Evaluating quality of service for service level agreements”, Allan Clark and Stephen Gilmore, In Proceedings of the 11th International Workshop on Formal Methods for Industrial Critical System, 2006, volume 4346, pages 181-194
  • “Quantative Analysis of Web Services Using SRMC”, Allan Clark and Stephen Gilmore and Mirco Tribastone, the 9th International School on Formal Methods for the Design of Computer, Communication, and Software Systems: Web Services, SFM 2009
  • “Stochastic Process Algebras”, Allan Clark and Stephen Gilmore and Jane Hillston and Mirco Tribastone, the 7th International School on Formal Methods for the Design of Computer, Communication, and Software Systems: Performance Evaluation, SFM 2007, volume 4486, pages 132-179
  • “The ipclib PEPA Library”, Allan Clark, Proceedings of the 4th International Conference on the Quantitative Evaluation of SysTems (QEST), 2007, pages 55-56
  • “Location-Aware Quality of Service Measurements for Service-Level Agreements”, Ashok Argent-Katwala and Jeremy Bradley and Allan Clark and Stephen Gilmore, Proceedings of the Third International Conference on Trustworthy Global Computing (TGC’07), volume 4912, pages 222-239
  • “Safety and Response-Time Analysis of an Automotive Accident Assistance Service”, Ashok Argent-Katwala and Allan Clark and Howard Foster and Stephen Gilmore and Philip Mayer and Mirco Tribastone, Proceedings of the 3rd International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (ISoLA 2008)
  • “Terminating Passage-Time Calculations on Uniformised Markov Chains”, Allan Clark and Stephen Gilmore, Proceedings of the 24th UK Performance Engineering Workshop (UKPEW), 2008, pages
  • “State-Aware Performance Measurement with eXtented Probe Specifications”, Allan Clark and Stephen Gilmore, Proceedings of the 5th European Performance Engineering Workshop (EPEW), 2008.
  • “Semantic-Based Development of Service-Oriented Systems.”, Martin Wirsing, Allan Clark, Stephen Gilmore, Matthias M. Hölzl, Alexander Knapp, Nora Koch, Andreas Schroeder, in the proceedings of FORTE 2006: volume 4229, pages 24-45
  • “Modelling the CoCoME with the Java/A Component Model”, Alexander Knapp, Stephan Janisch, Rolf Hennicker, Allan Clark, Stephen Gilmore, Florian Hacklinger, Hubert Baumeister, Martin Wirsing, In The Common Component Modeling Example (CoCoME) 2007: volume 5153, pages 207-237