Dave Cunningham

Learn More
GPU architectures have emerged as a viable way of considerably improving performance for appropriate applications. Program fragments (kernels) appropriate for GPU execution can be implemented in CUDA or OpenCL and glued into an application via an API. While there is plenty of evidence of performance improvements using this approach, there are many issues(More)
The Universe Type System is an ownership type system for object-oriented programming languages that hierarchically structures the object store; it is used to reason modularly about programs. We formalise Universe Types for a core subset of Java in two steps: We first define a Topological Type System that structures the object store hierarchically into an(More)
Virtual Reality (VR) is proving to be an effective treatment tool in rehabilitation. Currently we are providing VR therapy to patients in an out-patient clinic and an adult day center. The main focus to this paper is to show how VR is used in occupational therapy to improve balance and dynamic standing tolerance with geriatric patients. We will discuss our(More)
With the introduction of multi-core CPUs, multi-threaded programming is becoming significantly more popular. Unfortunately, it is difficult for programmers to ensure their code is correct because current languages are too low-level. Atomic sections are a recent language primitive that expose a higher level interface to programmers. Thus they make concurrent(More)
Universe types characterise aliasing in object oriented programming languages and are used to reason modularly about programs. In this report we formalise prior work by Müller and Poetzsch-Heffter, who designed the Universe Type System for a core subset of Java. We present our work in two steps. We first give a Topological Universe Type System and show(More)
A World Wide Wide-based telerehabilitation platform has been demonstrated in a laboratory environment. This platform allows a rehabilitation provider to thoroughly evaluate the progress of a patient remotely with the same care and measurement precision that would be possible if the provider and the patient were in the same room. The platform was designed to(More)
Atomicity provides strong guarantees against errors caused by unanticipated thread interactions, but is dicult for programmers to implement with low-level concurrency primitives. With the introduction of multicore processors, the problems are compounded. Atomic sections are a high level language feature that programmers can use to designate the blocks of(More)