Some of the things that I work on in my spare time, these are generally things I find interesting but have not found the time to properly pursue in depth. Each of these subtopics have a sufficiently developed theoretical background, my interests generally lie in their application and industrial use.
Graph algorithms to determine optimal paths in large, highly parallel distributed systems and within adaptive mesh refinement.
Particle swarm optimization to determine the optimum parameter values from larger, randomly distributed sets.
Neural Networks working in parallel to help with the accuracy of climate and weather models, which can become quite chaotic when left to run for a forecast of several weeks.
Dynamic task scheduling concerns scheduling the execution of tasks within a concurrent or parallel system. Here is an MPI library that performs loop level task scheduling for independent loop iterates.
Logical Clocks: I have implemented a logical clock for event ordering using Lamport Timestamps. It is written in C and its performance has been evaluated in a, distributed, sockets based client server system using UDP datagrams.