These pages contain links to software and other personal information that might be useful. There is a brief CV at the end of the page. Since being Head of School (2000-05) I have been very interested in workload modelling and how knowledge of workload allocations can enable the fostering of new activities. I am currently involved both at a University and also at a national level in workload modelling systems.
In conjunction with Castleview primary School in Edinburgh I have been investigating a technique that enables the assessment of children to identify those that may need special interventions to support their learning. This work has been ongoing since 2008-09 and has resulted in the assessment of the whole school and subsequently only children in their early years. The assessment gets children to join a set of dots to form a pattern on a variety of input devices including SMART Boards, graphics tablets and normal computer mice. The ability of the child to complete the pattern can be assessed numerically and this gives some indication of the nature of the support interventions that may be beneficial.
The software relates specifically to the work I have been undertaking in the area of Communicating Process Architectures. I have been interested in such architectures since 1976 and have built a number of Concurrent and Parallel Systems. Current activity is based upon the JCSP Library that enables a style programming based upon Hoare’s Communicating Sequential Processes (CSP). I have been especially interested in building systems that use a few helper classes that allow the construction of parallel systems in Groovy. These Groovy Parallel systems can be run on a single processor or on a network of processes in a transparent manner. The advantage of using the underlying JCSP Library is that it has been designed to support a CSP-style of programming but does not require the user to be familiar with the underlying the CSP mathematics and formalisms as explained in Hoare’s book. We use a few (less than 5) very simple design patterns which allow the programmer to build deadlock and livelock free systems. More importantly, it is possible to reason about the behaviour of such systems. In addition, for mission critical systems, it is possible to use tools such as SPIN and FDR to build formal models of the system which can then be checked automatically for correctness.
In addition I have created a version of JCSP, called JCSPre that runs on a LEGO Mindstorms robot using the Lejos environment. This is a greatly reduced version of the JCSP library but which is still sufficient to build sophisticated parallel controllers. We have built a system in which SEVEN robots interact together to provide a visualisation of a solution to the Santa Claus problem. The interactions take place using the inbuilt LEGO Bluetooth capability, JCSPre, Lejos system calls and the Bluecove library for Bluetooth communication in Java.
One of my roles at the University is TRAC Academic Manager, which means that I am responsible for the annual TRAC and TRAC-T returns. Perhaps, more importantly, I am also responsible for the deployment of a University-wide Workload Allocation Model (WAM). This system is used to record all aspects of academics’ workload under the TRAC categories of Teaching, Research, Other and Support. This data is then used to create the Time Allocation Schedule (TAS) required by TRAC in a manner that repre3sents actuality rather than by taking workload samples and the use of techniques such as self-reported diaries.
The WAM in fact provides much more information than just the TAS. It provides a fruitful source of information about how resources are used. It is providing very useful information for a Cost Conscious Planning project that is addressing sustainability options.
In support of this activity I am an active member of Modelling Academic Workload network managed by the University of Salford. Edinburgh Napier University is also a working group member of the TRAC Development Group’s action on Workload Modelling.
Recently, I have been investigating a new technique to determine the hand-eye co-ordination of primary school children. They have to complete several patterns of dots with both hands. Initial indications are the technique does appear to be able to detect children who have writing problems and/or other learning difficulties. Comparing the results obtained from the testing and the assessment by the children’s class teachers an 84% agreement was obtained between the test outcome and the teachers view. The test does not appear to miss children with difficulties either writing or other. The test did tend to indicate children who were deemed to have no difficulties. The tesst were initially undertaken on the whole school in 2008-09. Since then the P1 (new entry) children have been tested at both the start and end of their first year in school. The technique has been able to identify children who have been given additional support for specific aspects of their learning. I have also tested children as they progress through the school. This work is ongoing.
Many educators and practitioners believe that concurrent and parallel programming is one of the hardest aspects of computing. This stems from the fact that the models and environments commonly used, e.g. thread based models, are hard to use and very easy to get wrong. In fact, in many ways, provided the right model is used parallel programming can be easier than its sequential brother.
For a long time there have been models based upon Tony Hoare’s CSP. The more successful implementations, such as occam and XMOS’ extended C have as their basis the original CSP formulation that appeared in 1978. The original formulation is more tractable for the naive reader.
The JCSP library essentially takes many of the concepts developed in occam and transformed them into a Java environment. The main advantage of JCSP is that the user is not concerned with the underlying Java thread model but instead simply has to build processes that interact with each other using communication channels. The programmer simply has to create all the required processes and then construct the network of communication channels required to support communication between the processes and then set all the processes running. Provided the processes have been correctly designed then the system will execute with a predictable behaviour. The crucial benefit of the CSP-based approach is that we can deal with systems that are event driven and which also have a non-deterministic behaviour. Perhaps the simplest familiar example of an event driven system with non-deterministic behaviour is a graphical user interface. The interface does not know beforehand which component in the interface is going to be activated and when that will happen; all that is known is the possible interactions which might happen in any order.
The advent of Groovy meant that it was now possible to build parallel systems much more easily due to the reduced amount of code that had to be written. This made it much easier to understand how parallel systems are designed and implemented because the amount of code that had to be read was much smaller. Thus a small number of helper classes have been added to JCSP to enable the use of Groovy in a simple and friendly manner to explore the delights of parallel programming. A brief introduction to the Groovy Parallel helper classes and their use is available.
Assuming that you are convinced by the approach (why wouldn’t you be) then a more complete set of examples is available together with the required jar files to allow you to load them into a development environment and run the examples. Also included are some exercises so you can test your understanding. The examples have been tested in the Eclipse IDE versions 3.5, 3.6 and 3.7 using the appropriate Eclipse Groovy Plugin. The software runs with Java 1.6 and 1.7 but must use a 32-bit version of Java.
For Eclipse users the projects associated with the Examples and Exercises can be downloaded as an archived project but, you will still need to download the above jar files and then configure the build path so that Eclipse points to the jar in Referenced Libraries. If you are using a Windows based system then a version of the archived Eclipse projects is available as Examples and Exercises Configured for C:drive in which it is assumed that the above jar files are stored in a folder called C:\GroovyJCSP-EclipseLib
When building the system please be aware that all the jar files are referenced by every source folder in both the examples and exercises.
Each of the folders in the examples zip contains the PDF of a detailed description of the code that is presented in the folder.
An overview of each example folder is as follows:
C2 to C5 introduce all the basic concepts including; parallel, communication and non-deterministic inputs
C6 shows how JUnit can be used to test a simple parallel system
C7 and C8 introduce the problems of deadlock and live lock and then show how a simple design pattern can be used to ensure that these effects can be eradicated from designs
C9 shows how multiple external events can be handled in a predictable manner that is not dependent upon any underlying interrupt handling system
C10 revisits deadlock through a system that is intrinsically deadlocked, namely a circular structure; it then explains the reasoning that has to be undertaken to show the system works in the desired manner
C11 uses a Brownian motion simulation of many particles to show how parallel user interfaces can interact with many particle processes, typically more than 200.
C12 presents several solutions to the Dining Philosophers problem
C13 and C14 present solutions that involve the use of shared memory concepts such Concurrent Read Exclusive Write and Barriers. The latter presents a type of arcade game where the user has to press the mouse over a randomly chosen set of targets that are only visible for different random times.
C15 and C16 introduces the concept of communication over networks and shows how the JCSP approach to process definition is completely independent of which node a process is executed. The chosen example is that of a networked printer service that can be used by any number of users accessing any number of individual printers.
C17 extends the concepts of testing showing how this can be done for non-terminating systems using the network capability.
C18 shows how mobile agents can be constructed and passed from one processing node to another interacting with the processes already located at a node.
C19 shows how process can be transferred from one processor to another to enable interaction between transient clients in a localised wireless network.
C20 shows how mobile processes can be used to help with the maintenance of a communications infrastructure by by-passing nodes that are not functioning correctly and then r5eincorporating them when they are back in service.
C21 combines all these aspects and shows how a mobile agent can be created that searches for a required process located on another unknown node and then install that process on the home node so that it can process data of that type.
I have recently implemented a system that shows how a process farm can be created that executes on a LAN. The demo also shows how, with the net2 communications infrastructure, it is possible to create systems in which required class files are downloaded automatically, as required over the network. The source is contained in one zip file and there is also associated documentation.
Together with a number of project students we have built an implementation of JCSP that can run on a LEGO robot called JCSPre. The implementation has enabled a number of robots to communicate using the MINDSTORMS in-built Bluetooth communication mechanism, the Lejos tiny Java Virtual Machine and the Bluecove Java library v2.1.0 to access the Bluetooth stack. Please note the implementation only works if the Bluetooth capability running of the PC implements the Widcomm v5 stack.
The work was initially undertaken by Alex Panayotopoulos, who built the first JCSPre system, which the remainder of the students and I used. Patrick Lismore then built a rudimentary system that exploited the Lejos Bluetooth capability, using an early version of Lejos which had in incomplete Bluetooth implementation. Severin Fichtl then used a later version of Lejos-0.8.0, Bluecove-2.1.0 and a Widcomm Bluetooth dongle (there may be others but the linked one worked!). He was then able to connect seven LEGO Robots to a master PC as a PAN and through a series of experiments was able to load all the robot control code onto the robots and only use the PC to provide the message passing capability between the robots. A copy of Severin Fichtl’s project report can be downloaded.
More recently, I have created a simulator for JCSPre that enables simulation of a process network that will eventually be downloaded onto a LEGO NXT Robot. The network interfaces to the same processes that make up the JCSPre abstraction of the L:EGO robot motors and sensors, except that the motors and sensors are simulated by a graphical interface. The associated zip file also contains a presentation that shows in more detail the nature of the robot abstractions and the changes that have to be made to channel declarations between the simulated and actual downloadable version.
LEGO, MINDSTORMS are registered trademarks of The LEGO Group
This CV has been created so that anyone that needs information about my career in terms of qualifications and examining experience has easy access to it. If a more complete CV is required then please contact me by email using j.kerridge(at)napier.ac.uk or phone 0131 455 2777.
BSc 2(ii) Applied Mathematics Aberystwyth 1970
MSc Computing Manchester 1971
PhD Computing Manchester 1975
Chartered Engineer 1988
Fellow, British Computer Society 2005
Professor of Computing (since January 1996)
School of Computing
Edinburgh Napier University
Ph D Examiner External examiner for more than 20 Universities and Polytechnics,
including Universities : Manchester, Leeds, Imperial College, Kent, Hull, UMIST,UCL,TU Delft, Sheffield
Polytechnics: Hatfield, Bristol, Newcastle, Sheffield
I have successfully supervised more than 20 PhD candidates and 1 MPhil candidate.
MSc (Thesis) More than 40 theses for various universities and polytechnics
Brighton Polytechnic BSc and BSc (Hons) Computer Studies 1988 - 1991
Bristol Polytechnic MSc in Parallel Computing Systems 1989 - 1992
Newcastle Polytechnic BSc in Industrial Computing 1990 - 1993
Wolverhampton University BSc in Computer Studies 1993 - 1997
University of Hertfordshire BSc in Computing 1998 – 2001
University of Cardiff BSc in Computer Science 2001 - 2004
University of Ulster MSc in Computing 2000 - 2003
I am a member of the EPSRC College of Peers
I am an Assessor for Accreditation of Courses for the British Computer Society