Projects

I am working on too many silly things for sure... :-)

Peter's Hacks

A collection of hacks, for just about any appropriate definition of "hack" you can find. Feel free to email me any comments you might have.

Simple Memory Statistics

License: GNU General Public License

Here is a simple Python script to measure the memory consumption of another process in the spirit of time(1). It's a really bad hack, but it works well enough for my (very) limited purposes. This was first written in early 2004, but never formally released until now (except to students in my CS 100 courses).

Simple Subversion Statistics

License: GNU General Public License

Here is a simple Python script to generate basic statistics about Subversion repositories. If you are interested in something fancier, please check out this project which I ran across only after I had already hacked my script.

The Programming Language Mini

License: GNU General Public License

Here is a simple single-pass compiler for an even simpler programming language called Mini. The language was designed by Fridtjof Siebert way back in 1992. I reimplemented it for a number of reasons, none of which I want to disclose publicly.

Note that this is still under constant development, so be prepared for lots of "TODO" notes all over. The only "neat" thing about it are the various code generators it comes with: so far I have MIPS (using SPIM), MMIX, LC-3, PowerPC (under Mac OS X), and Intel IA-32 (under Linux). But never fear, more are in the works. :-)

Programming Contests

So far I was only able to convince people once to come along for the contest ride. Of course the results below are unlikely to change that... :-)

ICFP 2004

At the end of Spring 2004, I convinced several people to participate in the programming contest associated with the International Conference on Functional Programming. We came in at position 294 out of 361 entries, so we didn't exactly "win" anything. However, it certainly was 72 hours of good fun (and sheer desperation :-). Our team, code-named "Bushwhackers" for obvious reasons, consisted of four people:

Screenshot

Michael no doubt deserves the most credit, he wrote the initial simulator pretty much by himself (with some help from Peter and Ryan), and then he ported our slow Python mess to C++ by himself (although Peter started an independent port as well, but that one got shelved).

Michael also worked on a high-level programming language for Ant behavior, but it didn't get done in time for the contest. Peter developed a simple Ant assembler instead and hacked Ants by hand (yes, I am responsible for our bad results compared to other people's Ants). Wagner and Michael tried to figure out evolutionary strategies for breeding Ants, but those never got done.

I hope that we can post our code here at some point. Although we didn't "win" anything, it's still a fun project. Who knows, maybe I'll assign it in CS 100 one of these days... :-)

PS: I actually did assign the simulator part of the project as a "warmup" for CS 180 in Spring 2005. It went great, we even had simulators with smiling ants and ants carrying around burgers.

Student Projects

A collection of relatively small projects in various areas of computer science, mostly carried out with the invaluable assistance of dedicated (undergraduate) students. Feel free to email me if you want to participate in a project, or if you have an idea you think would be interesting to me.

eXtreme Schedule Generator (XSG)

Students: Vivek Bhaskar

In Fall 2003, the project in CS 100: Software Construction was generating "nice" weekly schedules in HTML, suitable for inclusion on the typical academic website. We are still maintaining one of the versions produced in the course, although we have not done an official release yet.

Image Processing Language (IPL)

Students: Stephen Hock

We're working on a simple domain-specific language for image processing applications that will (hopefully) lead to clearer code for certain feature extraction tasks.

Targets for Compiler Design

Alumni: Stephen Hock, Ryan Mannion (Cobalt Qube)

Applied courses in compiler construction would benefit from having machines with "nice-yet-simple" processors available, allowing students to develop "simple-yet-realistic" code generators. We're taking two approaches: On the one hand, we try to set up a suitable "park" of actual machines running NetBSD; this involves working on (old) hardware, installing the OS, and setting up GNU tools as needed. On the other hand, we try to port or write suitable machine simulators for architectures we have no actual hardware for.

eXtreme Find Duplicates (XFD)

In Winter 2004, the project in CS 100: Software Construction was a tool to find duplicate files and directories in a given file system. I hope we will eventually maintain one of the better implementations, probably the one written in Python that ended up beating all the C++ ones.

Constructive Solid Geometry Language (CSGL)

I used to make levels for Unreal back in my grad-school days (including a model of the ICS 2 building at UC Irvine, don't ask). However, I hated the editor since it lacked any facilities for abstraction. Using a language to describe the various repetitive tasks of creating a level, this could be a fun hobby once again...