# Publications

### Contents

#### Safe Parallelism for Behavioral ControlPDF

Jadud, M., Jacobsen, C. L., Simpson, J., and Ritson, C. G.
2008 IEEE Conference on Technologies for Practical Robot Applications, November 2008

##### Abstract

During the Spring 2008 semester at Olin College, we introduced the programming language occam-pi to undergraduates as part of their first course in robotics. Students were able to explore image processing and autonomous behavioral control in a parallel programming language on a small mobile robotics platform with just two weeks of tutorial instruction. Our experiences to date suggest that the language and tools we have developed allow the concise expression of complex robotic control systems, and enable the integration of events from the environment in a consistent and safe model for parallel control that is directly expressed in software.

##### Bibtex
@inproceedings{safepar08,
author={Matthew Jadud and Christian L. Jacobsen and Jon Simpson and Carl G. Ritson},
booktitle={2008 IEEE Conference on Technologies for Practical Robot Applications},
month={November},
pages={137--142},
publisher={IEEE},
title={Safe Parallelism for Behavioral Control},
year={2008},
}


#### Visual Process-Oriented Programming for RoboticsPDF

Simpson, J., and Jacobsen, C. L.
Communicating Process Architectures 2008, September 2008

##### Abstract

When teaching concurrency, using a process-oriented language, it is often introduced through a visual representation of programs in the form of process network diagrams. These diagrams allow the design of and abstract reasoning about programs, consisting of concurrently executing communicating processes, without needing any syntactic knowledge of the eventual implementation language. Process network diagrams are usually drawn on paper or with general-purpose diagramming software, meaning the program must be implemented as syntactically correct program code before it can be run. This paper presents POPed, an introductory parallel programming tool leveraging process network diagrams as a visual language for the creation of process-oriented programs. Using only visual layout and connection of pre-created components, the user can explore process orientation without knowledge of the underlying programming language, enabling a processes first'' approach to parallel programming. POPed has been targeted specifically at basic robotic control, to provide a context in which introductory parallel programming can be naturally motivated.

##### Bibtex
@inproceedings{SimpsonJacobsen:2008,
author={Jonathan Simpson and Christian L. Jacobsen},
booktitle={Communicating Process Architectures 2008},
month={September},
pages={365--380},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={Visual Process-Oriented Programming for Robotics},
volume={66},
year={2008},
}


#### Virtual Machine-based Debugging for occam-piPDF

Ritson, C. G., and Simpson, J.
Communicating Process Architectures 2008, September 2008
Best Student Paper

##### Abstract

While we strive to create robust language constructs and design patterns which prevent the introduction of faults during software development, an inevitable element of human error still remains. We must therefore endeavor to ease and accelerate the process of diagnosing and fixing software faults, commonly known as debugging. Current support for debugging occam-pi programs is fairly limited. At best the developer is presented with a reference to the last known code line executed before their program abnormally terminated. This assumes the program does in fact terminate, and does not instead live-lock. In cases where this support is not sufficient, developers must instrument their own tracing support, "printf style". An exercise which typically enlightens one as to the true meaning of concurrency... In this paper we explore previous work in the field of debugging occam programs and introduce a new method for run-time monitoring of occam-pi applications, based on the Transterpreter virtual machine interpreter. By adding a set of extensions to the Transterpreter, we give occam-pi processes the ability to interact with their execution environment. Use of a virtual machine allows us to expose program execution state which would otherwise require non-portable or specialised hardware support. Using a model which bears similarities to that applied when debugging embedded systems with a JTAG connection, we describe debugging occam-pi by mediating the execution of one execution process from another.

##### Bibtex
@inproceedings{RitsonSimpson-2008,
author={Carl G. Ritson and Jonathan Simpson},
booktitle={Communicating Process Architectures 2008},
editor={Welch, Peter H. and Stepney, Susan and Polack, Fiona A.C. and Barnes, Frederick R. M. and McEwan, Alistair A. and Stiles, Gardiner S. and Broenink,  Jan F. and Sampson, Adam T.},
month={September},
pages={293--307},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={{V}irtual {Machine}-based {D}ebugging for occam-{$\pi$}},
volume={66},
year={2008},
}


#### Patterns for programming in parallel, pedagogicallyPDF

Jadud, M. C., Jacobsen, C. L., and Simpson, J.
SIGCSE '08: Proceedings of the 39th SIGCSE technical symposium on computer science education, February 2008

##### Abstract

Pipeline, Delta, and Black Hole are three simple patterns used in concurrent software design. We recently presented these and other patterns for parallelism at a nine-hour workshop for professional embedded systems developers. By grounding these patterns in the context of robotic control on the LEGO Mindstorms, we provided an engaging and enjoyable educational experience for our students,'' and reaffirmed that small, powerful languages have a place in education for beginners and experts alike.

##### Bibtex
@inproceedings{Matthew-C.-Jadud:2008,
author={Matthew C. Jadud and Christian L. Jacobsen and Jonathan Simpson},
booktitle={SIGCSE '08: Proceedings of the 39th SIGCSE technical symposium on computer science education},
issue={1},
month={February},
pages={231--235},
publisher={ACM Press},
title={Patterns for programming in parallel, pedagogically},
year={2008},
}


#### A Native Transterpreter for the LEGO Mindstorms RCXPDF

Simpson, J., Jacobsen, C., and Jadud, M. C.
Communicating Process Architectures 2007, July 2007

##### Abstract

The LEGO Mindstorms RCX is a widely deployed educational robotics platform. This paper presents a concurrent operating environment for the Mindstorms RCX, implemented natively using occam-pi running on the Transterpreter virtual machine. A concurrent hardware abstraction layer aids both the developer of the operating system and facilitates the provision of process-oriented interfaces to the underlying hardware for students and hobbyists interested in small robotics platforms.

##### Bibtex
@inproceedings{SimpsonJacobsen07,
author={Simpson,  Jonathan and Jacobsen,  Christian and Jadud,  Matthew C.},
booktitle={Communicating Process Architectures 2007},
editor={McEwan,  Alistair A. and Ifill,  Wilson and Welch, Peter H.},
isbn={978-1586037673},
month={July},
pages={339--348},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={{A} {N}ative {T}ransterpreter for the {LEGO} {M}indstorms {RCX}},
volume={65},
year={2007},
}


#### Concurrency, Robotics and RoboDebPDF

Jacobsen, C. L., and Jadud, M. C.
March 2007

##### Abstract

Robotics is an engaging and natural application area for concurrent and parallel models of control. To explore these ideas, we have developed environments and materials to support the programming of robots to do interesting tasks in a fundamentally concurrent manner. Our most recent work involves the development of RoboDeb, a virtual computer'' pre-installed with the open-source Player API and Stage simulator to support classroom exploration of concurrency and robotic control using the occam-pi programming language.

##### Bibtex
@techreport{Jacobsen:2007,
author={C. L. Jacobsen and M. C. Jadud},
month={March},
title={Concurrency, Robotics and RoboDeb},
year={2007},
}


#### Mobile Robot Control - The Subsumption Architecture and occam-piPDF

Simpson, J., Jacobsen, C. L., and Jadud, M. C.
Communicating Process Architectures 2006, September 2006

##### Abstract

Brooks' subsumption architecture is a design paradigm for mobile robot control that emphasises re-use of modules, decentralisation and concurrent, communicating processes. Through the use of occam-pi the subsumption architecture can be put to use on general purpose modern robotics hardware, providing a clean and robust development approach for the creation of robot control systems.

##### Bibtex
@inproceedings{SimpsonJacobsenJadud06,
author={Jonathan Simpson and Christian L. Jacobsen and Matthew C. Jadud},
booktitle={Communicating Process Architectures 2006},
editor={P. Welch and J. Kerridge and F. Barnes},
keywords={Mobile robots, Robot control, Subsumption architecture, occam-pi},
month={September},
pages={225--236},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={{M}obile {R}obot {C}ontrol - {T}he {S}ubsumption {A}rchitecture and occam-pi},
volume={64},
year={2006},
}


#### A Cell TransterpreterPDF

Dimmich, D. J., Jacobsen, C. L., and Jadud, M. C.
Communicating Process Architectures 2006, September 2006

##### Abstract

The Cell Broadband Engine is a hybrid processor which consists of a PowerPC core and eight vector co-processors on a single die. Its unique design poses a number of language design and implementation challenges. To begin exploring these challenges, we have ported the Transterpreter to the Cell Broadband Engine. The Transterpreter is a small, portable runtime for concurrent languages and can be used as a platform for experimenting with language concepts. This paper describes a preliminary attempt at porting the Transterpreter runtime to the Cell Broadband Engine and explores ways to program it using a concurrent language.

##### Bibtex
@inproceedings{celltransterpreter,
author={Damian J. Dimmich and Christian L. Jacobsen and Matthew C. Jadud},
booktitle={Communicating Process Architectures 2006},
editor={Peter Welch and Jon Kerridge and Fred Barnes},
month={September},
pages={215--224},
publisher={IOS Press},
series={Concurrent Systems Engineering Series},
title={A {C}ell {T}ransterpreter},
volume={29},
year={2006},
}


#### Native Code Generation Using the TransterpreterPDF

Jacobsen, C. L., Dimmich, D. J., and Jadud, M. C.
Communicating Process Architectures 2006, September 2006

##### Abstract

We are interested in languages that provide powerful abstractions for concurrency and parallelism that execute everywhere, efficiently. Currently, the existing runtime environments for the occam-pi programming language provide either one of these features (portability) or some semblance of the other (performance). We believe that both can be achieved through the careful generation of C from occam-pi, and demonstrate that this is possible using the Transterpreter, a portable interpreter for occam-pi, as our starting point.

##### Bibtex
@inproceedings{JacobsenDimmichJadud06,
author={Christian L. Jacobsen and Damian J. Dimmich and Matthew C. Jadud},
booktitle={Communicating Process Architectures 2006},
editor={P. Welch and J. Kerridge and F. Barnes},
keywords={Transterpreter, native code, GCC, occam-pi},
month={September},
pages={269--280},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={{N}ative {C}ode {Generation} {U}sing the {T}ransterpreter},
volume={64},
year={2006},
}


#### Concurrency on and off the sensor network nodePDF

Jadud, M. C., Jacobsen, C. L., and Dimmich, D. J.
June 2006

##### Bibtex
@article{seuc2006,
author={Matthew C. Jadud and Christian L. Jacobsen and Damian J. Dimmich},
journal={SEUC 2006 workshop},
month={June},
title={Concurrency on and off the sensor network node},
year={2006},
}


#### A Foreign Function Interface Generator for occam-piPDF

Dimmich, D. J., and Jacobsen, C. L.
Communicating Process Architectures 2005, September 2005

##### Abstract

occam-pi is a programming language based on the CSP process algebra and the pi-calculus, and has a powerful syntax for expressing concurrency. occam-pi does not however, come with interfaces to a broad range of standard libraries (such as those used for graphics or mathematics). Programmers wishing to use these must write their own wrappers using occam-pi's foreign function interface, which can be tedious and time consuming. SWIG offers automatic generation of wrappers for libraries written in C and C++, allowing access to these for the target languages supported by SWIG. This paper describes the occam-pi module for SWIG, which will allow automatic wrapper generation for occam-pi, and will ensure that occam-pi's library base can be grown in a quick and efficient manner. Access to database, graphics and hardware interfacing libraries can all be provided with relative ease when using SWIG to automate the bulk of the work.

##### Bibtex
@inproceedings{DimmichJacobsen05,
author={Damian J. Dimmich and Christan L. Jacobsen},
booktitle={Communicating Process Architectures 2005},
editor={J. Broenink and H. Roebbers and J. Sunter and P. Welch and D. Wood},
isbn={1-58603-561-4},
issn={1383-7575},
keywords={occam-pi, SWIG, ocinf},
month={September},
pages={235--248},
publisher={IOS Press},
series={Concurrent Systems Engineering},
title={{A} {F}oreign {F}unction {I}nterface {G}enerator for occam-pi},
volume={63},
year={2005},
}


#### Towards concrete concurrency: occam-pi on the LEGO mindstormsPDF

Jacobsen, C. L., and Jadud, M. C.
SIGCSE '05: Proceedings of the 36th SIGCSE technical symposium on Computer science education, February 2005

##### Abstract

In a world of ad-hoc networks, highly interconnected mobile devices and increasingly large supercomputer clusters, students need models of computation that help them think about dynamic and concurrent systems. Many of the tools currently available for introducing students to concurrency are difficult to use and are not intrinsically motivating. To provide an authentic, hands-on, and enjoyable introduction to concurrency, we have ported occam-pi, a language whose expressive powers are especially compelling for describing communicating dynamic reactive processes, to the LEGO Mindstorms.

##### Bibtex
@inproceedings{1047485,
author={Christian L. Jacobsen and Matthew C. Jadud},
booktitle={SIGCSE '05: Proceedings of the 36th SIGCSE technical symposium on Computer science education},
isbn={1-58113-997-7},
month={February},
pages={431--435},
publisher={ACM Press},
title={Towards concrete concurrency: occam-pi on the LEGO mindstorms},
year={2005},
}


#### The Transterpreter: A Transputer InterpreterPDF

Jacobsen, C. L., and Jadud, M. C.
Communicating Process Architectures 2004, September 2004
Best Student Paper

##### Abstract

This paper reports on the Transterpreter: a virtual machine for executing the Transputer instruction set. This interpreter is a small, portable, efficient and extensible run-time. It is intended to be easily ported to handheld computers, mobile phones, and other embedded contexts. In striving for this level of portability, occam programs compiled to Transputer byte-code can currently be run on desktop computers, handhelds, and even the LEGO Mindstorms robotics kit.

##### Bibtex
@inproceedings{2004,
author={Jacobsen, Christian L. and Jadud, Matthew C.},
booktitle={Communicating Process Architectures 2004},
editor={East, Ian R. and Duce, David and Green, Mark and Martin, Jeremy M. R. and Welch, Peter H.},
isbn={1 58603 458 8},
issn={1383-7575},
keywords={Transputer, occam, interpreter},
month={September},
pages={99--106},
publisher={IOS Press},
series={Concurrent Systems Engineering Series},
title={{T}he {T}ransterpreter: {A} {T}ransputer {I}nterpreter},
volume={62},
year={2004},
}


#### Projects

Components of the Transterpreter, or just random explorations.