Here is a sample of projects which I have implemented. Note well: There should be links to actual source code, but I haven’t yet put those in. If you’re interested drop me a note and I’ll move it up the priority list.
This package was a testbed for checking automobile sensor algorithms. It contained a rough model of an automobile engine with several sensors. The sensors were linked to a virtual computer, which would interpret the data coming from the sensors and decide based on historical and other information whether to believe the data or not. It could compensate for wear and other kinds of predictable failures.
My first (and more or less only) X-Windows program. Starting from a Turbo Pascal program I had written back in 1989, I reimplemented this Poincare surface of section for the perturbed pendulum. With some small changes can be made into a general program for plotting such surfaces. A quantum mechanical version was also attempted, but various setbacks stopped its development.
This program dynamically changes the simplicial realization of a topology in an effort to simulate quantum gravity. The program isn’t complete, although all the topological components are there. The interesting part of this package is the approach I took to managing memory. Rather than rely on malloc(), I created an object space and managed its allocation and deallocation using a small stack. This works well since once the basic configuration is created, it is unlikely for more than a handful of holes to appear in the object space. Moreover the speed of this algorithm is greatly improved by bypassing the normal memory calls. This was important since I planned on running the program for several weeks to gain sufficient statistics.
This is a library of core routines which implement a recursive model of the partition function for fragmenting nuclei, and a series of short programs which use the core to generate thermodynamic and non-thermodynamic measurements. The interesting part of the code is the ability to implement exact evaluations in some curiously difficult places. The design emphasized code reusability, since the real work often involved writing a new wrapper around these codes every day or so. The code is now in the process of being reimplemented in C++. The principle advantage of the reimplementation is to segment the data properly.
This is a (very messy) Perl script which I hacked together one afternoon because I needed to extract a couple hundred references I had pulled from the Science Citation Index in BibTeX format. It does the job, but won’t win any programming awards, but is clearly a good starting point for a serious program which does the same.
Early on in my research I turned to Mathematica to do some modeling of fragmenting systems. Steve Skiena’s book, Implementing Discrete Mathematics, was quite helpful to start, but I quickly found Mathematica too slow to do anything but toy systems. I did eke out some extra performance from MMa by learning a few tricks. I was quite proud of reimplementing Skiena’s RandomPartition[] function so that it was shorter and faster, a change which is now part of the standard package. I also liked a fast and dirty coding of a Permanent[] function I cooked up while investigating some conjectures in number theory. Anyhow, here are a few examples.
This is another afternoon hack, mostly to prove I could do bit manipulations efficiently. It was a problem in a graduate statistical mechanics course, and while helping some students with some basic C coding, I thought of a novel way to do some of the work “in parallel”. As a result, high coordination number lattices are no more difficult to do than low coordination numbers, something which wasn’t immediately obvious to me.
Last modified: July 23rd, 1997
Kevin Chase