Some Projects
- My Mancala program
- When I attended the USA Computing
Olympiad's 1998
training camp, each finalist wrote a program that played an ancient
African game called Mancala. Once
Rob Kolstad finally got his judging program up and running, we
then sat around and watched the programs play each other on a big screen.
My program did pretty badly, so I've tried to do better ever
since. During August 1998, I read up on artificial intelligence and
game-playing in general, and hacked together a vastly-improved program;
right now, it consistently beats both me and every other algorithm I've
pitted against it. I know it's still far from perfect, though, and I'm
constantly looking for new programs to challenge it. (To make things
even more interesting, I wrote code to run an automatic tournament
between competing programs and keep track of the results. I plan
to run a big tournament between many peoples' programs eventually;
if you're interested in entering, email
me right away!) [Status: active!]
- PolarVision
- PolarVision is the 3-D world rendering program that I'm writing.
It is a 3-D engine with complete freedom of movement (six degrees of
rotation and six directions to move in.) I'm writing in Watcom
C/C++ 10.0, protected mode DOS/4GW, and 80386 assembler. The project is
of great interest to me, and as a side effect, I'm learning a lot of
math in the process. [Status: it works, but I haven't touched it
since 1996 or so.]
- MBHS Chemistry Resources
- A little while back, my former chemistry teacher,
Mr. Pham, asked me to put together a comprehensive list of
chemistry-related resources. I started out with a short list, and
eventually expanded it and broke it down into this. I am currently
working with Mr. Pham to put many of the documents used in his chemistry
classes on-line. [Status: uh...dead? I think it got lost amidst
too many web server changes and home page reconfigurations.]
- The Amazing Mandelbrot Zoomer
- Well, I don't actually have a name for any of the parts of this
project that I've written. However, I have been using Watcom C/C++ 10.0, DOS/4GW protected
mode, and 80386 assembler (sound familiar?) to try and make the fastest
Mandelbrot set generation algorithm that I can. So far, my program
employs symmetry usage, periodicity checking (Mandelbrot lake
optimization), and general algorithmic speed-ups to generate a 320x200
Mandelbrot set with 256 maximum iterations and a window of (-2.5,1.5)
to (1.5, -1.5) in 2.07 seconds on my 486/66. As a comparison, Fractint
takes only around .8 seconds; however, when I still used Pascal for
programming, a similar program of mine took several minutes! To
speed my program up even further, I am considering the use of a
solid-guessing algorithm similar to Fractint's. I could use integer
math, as well, but I probably won't. The reason for this is that I'm
keeping my program portable (assembler is only used for graphics
routines), and on higher-end machines, floating-point math is much
faster in relation to integer math than it is on my 486. So, the use of
integer math would only slow things down on a faster machine.
[Status: 486?? Hahaha, I've upgraded at least twice since then,
and the fractal program apparently got left behind.]