school

A portfolio of my older code I wrote in school is available here. In more detail, here are some of my school projects:

Distributed Artificial Intelligence

See deliverables here, here, here, here and here. The final report is available here.

Networking

Along with a partner, I wrote a generic HTTP client and proxy using socket programming in Visual C++ and the cross-platform ACE middleware. With the same partner, I wrote a relatively robust implementation of the basic models for reliable transport-layer protocols, including stop-and-wait, go-back-n, and selective repeat, again in Visual C++ using ACE. I also worked on an implementation of a link-state and a distance-vector routing protocol, using threads as simulated network hosts.

Network Security

As team leader of a group of 6, I designed and wrote a large portion of our project to add secure file-transfer functionality using RSA encryption and authentication from the NSS libraries to the existing gaim-encryption plugin for the popular instant-messaging client gaim. The code is currently being cleaned up and should be submitted back to the gaim-encryption project soon. These modifications were written in C under Linux but should be available on any platform that gaim and gaim-encryption are available on. Here's some supplementary materials we created for the class to understand our design and implementation:

Project report

Project presentation

Artificial Intelligence

In a group of 3 people, I helped to write a alpha-beta pruning iterative deepening informed search algorithm for the game of Othello. Our AI performed extremely well, coming in first place in the class two years running. In the same group, wrote a similar algorithm for the more complicated game of Backgammon with some optimizations made for speed. The AIs were both written in Common Lisp and are platform-independent.

Compilers

Along with a partner, I wrote most of a compiler (didn't actually get time to finish code optimization) for the Cool language. I used flex and bison analysis tools to do lexing and parsing and wrote an error checker, type system with object-oriented capabilities, and compile-time optimizations. The compiler was written in C under Linux but should be compatible with any system that has a port of gcc and make.

Computer Graphics

By myself, I wrote a graphics program with the capability to read images in the TIFF format, display them, perform a number of transforms including resizing, blurring, and sharpening on images, and write them to a file, using OpenGL and libraries only for screen drawing routines. I also wrote a basic 3D engine with full rotation, perspective, and orthographic capabilities. Finally, I wrote a raytracer capable of rendering complex scenes involving triangles, boxes, and true spherical surfaces with physically-based lighting. All of these programs were written in C and work on any system with a gcc compiler and OpenGL/GLUT capabilities.