Articles | Research | Teaching | Software | Book | Regex Crosswords | Personal | Contact
ExPo2 is a stock exchange simulator created by John Cartlidge, Paul Dempster, and others, which allows humans and automated trading programs (bots) to trade stocks on a simulated stock market. The stock market and the bots can be set up in different ways to allow researchers to run experiments on how markets function in different conditions. Technically, the system is written in Java and consists of two different servers which run together and many different possible clients (one web-based for humans, others for bots written in Java or C using WebSockets, ZeroMQ, or in-process communications depending on your latency needs).
Current status: the latest student projects include a substantial re-write and expansion of the communications systems to allow high-speed bots to be implemented. This will be merged at the end of the semester and, together with a few early experimental results, will form the first release of the system and an associated paper. An external website is being set up by John and will be linked here when available.
NOBA is an ongoing umbrella project I am running to develop an open source, modular MOBA game with data logging for research. Work on it forms the basis of a number of student project over a number of years, as well as my own contributions throughout. From a research perspective, the modular architecture allows experimentation with the rules and structure of an increasingly commercially important genre of games. Pervasive data-logging is intended to allow us to experiment with using data-mining and analytics as a way of automatically helping players learn how to play. From a teaching perspective, it allows students to realise that the majority of the complexity in large systems is unrelated to what the user can directly see and to dispel students misconceptions of what working in this field actually entails.
Current status: the latest student projects have implemented a 3D client interface, and added towers and minions into the game. These will be merged into the main project at the start of the summer at which point the project will be publicly available.
I have a continuing interest in the pedagogy of programming, particularly introductory programming and how to engage students with the subject (eg, using the demoscene), how different interfaces and languages effects them, and whether a more holistic "developer" approach is more productive than a "programmer" one.
Various independent pieces of work that are tied together by noticing work which looks like it might be improved by applying a different optimisation approach and trying it to see if, and why, it does.(collaboration)
For a particular fixture scheduling problem, the current solutions use meta- and hyper-heuristic methods. We are working on a much simpler network-based approach which gives deeper insights into the problem domain when parameters are changed.(collaboration)
My current list of group and individual project suggestions. Updated throughout the year as ideas come to me. Generally they are about programming, games (with network or AI components) , or one of my multi-year projects like NOBA or Expo2. I try to focus on them developing things that they might want to continue with after their project is complete.
Completed projects (more details on each at the bottom of the idea list linked above):
Trailgraph is a hypertextual, partly-collaborative Computer Assisted Language Learning system and formed the basis of a lot of the work I did during PhD research. It should pervasively tracks user interaction with the system and uses that individual and group data to cluster similar learners by their behaviour. These cluster can then be used to automatically generate tutor-style recommendations of resources, and to alterations in an individual's learning styles. Focusing on (preferably immersed) beginning learners of Mandarin, it presents an electronic dictionary interface to the user for basic tasks, and a reflective interface that allows them to explore the network of associations formed between items as they and other users learn.
Visual programming language targeted at beginners. The visual approach was chosen to separate the semantic and syntactic learning phases of programming. Programs are built by adding blocks which represent expressions or statements inside each other. Syntax mistakes are not possible as only valid types of blocks will be accepted by the containing block. The language is intended to be very close to non-OO Java constructs and is easily expanded via block panels.
The program contains an interpreter for the programs which allows step-by-step execution, stack traces, variable watching, and aborting program execution. The editor supports zooming in and out of the program, collapsing individual functions, and printing. A pervasive tooltip system is combined with a dynamic help system to allow local instructors to trivially augment it with class material.
The file format is XML (compressed by default) which contains checksums to detect text corruption (eg, via email) and there is a tool to assist in plagiarism detection.
Chinese/Classless Language Learning Environment. This was written as I was studying at Fudan University as a tool to help me learn. Contains a user-entered dictionary of words which allows quick, complex querying. It also has a flashcard drilling/quizing interface.
This formed the beginning of the Trailgraph project.
Taenarum was a distributed, collaborative, real-time programming development environment. It provided a Smalltalk-style code-browser to source code without having to have it in a particular format. It would read and parse standard source code as required so that it could be used by individual developers without having an effect on anyone else in the project (this is compared to most IDEs then, and now, which litter code with special files and file structures). Any edit actions that a user performed would be transmitted live to other Taenarum users on the same server so they could see a virtual "developing version" of the code as it happened. It had language plugins for C, Java, and Dylan, in various states of completion, CVS support, and a Java evaluation playground (via a third party interpreter).
Development slowed down as I got busy with other things and changed the way I worked. Collaborative editing was starting to be added to popular text editors which have better support than just me. Finally abandoned when I accidentally left the source code in the UK when moving to live in China.
Minerva was an attempt to take high-resolution satellite images, such as those provided by the USGS, and automatically regenerate a 3D environment from them. The idea was that this would rapidly accelerate the first stage of content creation in open-world sandbox games which were popular at the time. Since others had better knowledge of image processing than me (ie, any), I decided to explore different approaches to identifying objects in the images.
This eventually got bogged down for three reasons:
Dylan and OpenGL
Senior project at University of Glasgow. GCSpy is a generic garbage collection visualisation framework. This project integrated it into the BDW conservative GC. As this was the first conservative GC supported, some changed to GCspy were required. Overall, the project was a success. It was successfully integrated and collector behaviour could be easily observed.
Hand and machine written C, Java, assembly language, Dylan, inter-language binding definitions. [report][presentation]
A custom-written, C++ remote debugger for an in-house Domain Specific Language. Written in 3 weeks at the end of a work placement with BT, working on the new Emergency Services (999) call handler system. Has limited live code replacement ability. Previous debug ability was a 1-line text gadget showing the currently running line of code, or breakpointing inside the DSL interpreter itself. Project was just about to be moved from development to maintenance with an outsourced team. This debugger allowed them to debug problems at the business logic level, where almost all the bugs lay, rather than the C++ implementation code.
(Work in progress. Title and contents are subject to change.)
The concept behind this book is to provide an introduction to programming textbook for early years university students without a previous programming background, with a focus on non-native English speakers. This focus is realised by paying particular attention to the language and examples used within the content.
The level of language competence of students is often assumed to be higher than it actually is. For various reasons, admissions processes do not always result in all student's having the minimum prerequisite competence levels. As a result, this book also provides introductory-EAP level material within the domain of computer science which can be used in such courses while familiarising the student with their future area of study.
The programming approach consists of two phases. The first talks generically about the fundamental aspects of programming. The necessary aspects are introduced and possible solutions are discussed across all existing programming languages. The second phase focuses on a particular programming language that the student is expected to become competent in for the rest of their studies (the 1st edition focuses on Java) and explores the previous aspects in depth, together with frameworks required for practical implementations.
Example of structure:
Part A - Essays on computing: History of games, Growth of E-commerce, ...
Part B - Fundamental concepts: Bits and representations, Types, Variables and Constants, Functions, Iteration, ...
Part C - Using Java: The Java Stack, Command-line args, Interfaces, Error handling, ...
Appendices - Technical Glossary, ...
Regular Expression Crosswords, or Regex Crosswords for short, are crossword-inspired puzzles in which the player has to fill a grid of letters to match clues given as regex patterns. Awareness of them appeared after one was set as a problem in the 2013 edition of MIT's annual Mystery Hunt.
I am interested in these puzzles both as entertainment and as a tool for teaching regular expressions, to likely Computer Science students and as a useful tool to those unlikely to come across the concept in their studies.
I have developed an interactive regex crossword tool which can be embedded in web pages that loads regex crosswords in a generic specification file and presents them in a canvas-based interactive visualisation for the viewer to solve. It currently supports the conventional dense hexagonal format of crosswords but support for other formats is expected.
I am interested in writing a short booklet which uses regex crosswords as the basis of teaching regular expressions, but alas have not yet found the time since the module I was originally going to use them in was discontinued. It would be targeted towards being a self-directed classroom workbook which can be given to Computer Science or ICT students, or an out of class resource for those who have shown interest in patterns and mathematics but find it difficult to formally pursue them. The workbook will have an associated website which contains each of it's crosswords that can be solved using the previously mentioned interactive tool.
My current main responsibility is as the Senior Tutor in the School of Computer Science, which means I'm responsible for the support and guidance given to our 300+ students, and overseeing the Personal Tutors system within our School. I'm also an active part of the university-wide Senior Tutors Network which provides oversight in academic and pastoral care matters.
Email: firstname.lastname@example.org , email@example.com ,
firstname.lastname@example.org , email@example.com, firstname.lastname@example.org (old addresses for search engines)
Mail can be directed via: Mr Paul Dempster, Room 438 Sir Peter Mansfield building, University of Nottingham Ningbo, 199 Taikang Dong Lu, Ningbo, Zhejiang, China, 315100.