## High school programming projects (non-exhaustive list)

• Star trek video game.
Side scrolling shooter where you blast Klingons with lasers, dodge torpedoes, and use shields.
• Feature-rich, super efficient text-mode accounting program in macro assembler.
Uses low-level math routines to ensure accurate rounding of pennies when computing interest.
• Mouse-based painting program for making custom video game graphics.
Lots of hotkeys to speed up work.
• Karel language compiler and world simulator.
Like pascal. Allows recursion, functions defined within functions. target code controls virtual robot.
World simulator takes karel world files and robot code and graphically runs robot in world. Robot can walk, turn, detect walls or beepers on ground, pick up, put down beepers.

## Undergrad programming projects

These were mostly toy programs compared to what I did in high school, since that's what teachers know how to grade. However, the group projects were quite substantial.
• Data structures
• C module for circularly linked lists.
• C module for binary trees.
• C module for minheaps.
• Program to radixsort a list of social security numbers.
• Program to solve the shortest path problem on an undirected graph using Dijkstra's algorithm.
• Huffman decoding program to decrypt encrypted text files.
• Architecture
• Program in MIPS assembler to interactively get a list of numbers and use bubblesort on it.
• Principles of programming languages
• Coral reef simulation in C++.
Animals move, reproduce, and eat. Some species eat other species. Like an extravagant version of Conway's Game of Life.
• Program to translate arithmetic expressions from infix to prefix notation in Scheme (a derivative of Lisp).
• Program to solve 4-color map problem in Prolog.
• Numerical analysis
All of these required statistical analysis of results.
• Program to find real roots of a polynomial.
• Program to LU factor matrices.
• Program to generate least squares approximating function to a data set from a given vector space of functions.
• Program to apply Romberg method to solve various integrals.
• Program to implement 2nd order Runge Kutta method for solving systems of 1st order differential equations in C++.
• Program to solve inhomogeneous linear boundary value problem by solving tridiagonal linear system.
• Program to solve Laplace's equation with boundary conditions by solving a large sparse linear system using successive over relaxation method.
• Solve boundary value problem by solving sparse linear system using Jacobi, Gauss-Seidel, and successive over relaxation methods.
• Program to generate a cubic spline to interpolate a data set and display graphically.
• Databases
• In a team of 4, made a website for a computer science conference.
Setup a sybase database to store paper submissions, attendee registration info, paper reviews, and conference itinerary.
Made perl scripts with embedded SQL to communicate with the database.
The website gave appropriate access to the database for conference chairs, reviewers, guest lecturers, and attendees.
• Internet technology
• Anonymous remailing server in java.
Server accepts incoming email, strips all evidence of the source, and remails it to the destination.
• Chat program in java.
Users on different hosts can talk to each other by typing in a chat window.
• Compilers
• Compiler to transform a (large) subset of pascal into MIPS R2000 RISC assembly code using lex, yacc, and C.
• Operating systems
• Operating system simulator in C++.
Simulator creates processes from external requests or by forks. Processes make system calls, block on I/O, or quantum timeout. Simulator gathers performance statistics (such as the mean and variance of process throughput, ready queue size, I/O wait queue size) for various scheduling algorithms (e.g. round robin, shortest job first).
• Distributed systems
• News server in java.
Allows reading and posting of news.
• Web applications
• Threaded http 1.1 server in perl.
• In a team of 4, built a B2B website called Danube.
Our mock business sold office supplies. The website allows other businesses to set up company accounts with us. Then employees can purchase from us (within managerially controlled limits) with very little paperwork. Managers can view statistics on their employees' spending. Installed and setup an apache server, mysql database server, java servlet server (jakarta-tomcat). The web site accesses the database using java servlets.
• Honors project
• Utility (m2html) to convert html/latex into html to put the power of latex mathematical typesetting into web pages.
It is simpler and in some ways more efficient than latex2html.
• Personal project
• Implement Hungarian method to solve stable marriages linear programming problem.

## Graduate programming projects (non-exhaustive list)

• Graphics
• Launch.
Opengl movie of a (poorly drawn!) space shuttle launching into space. Uses cubic splines to control almost everything that moves: camera, lights, shuttle.
• Algorithms
• Completely solved one variant of mancala using alpha beta pruning and clever game state encoding.
• AI
• Matlab program to determine the gender of a person given an image of their face.
• Program to determine life or death in game of go using perceptrons.
• Research projects
• Too many to list. Most search for strange combinatoric objects to help prove theorems.
• Professional projects
• Hors categorie interactive fiction game.
Hired by David Benin from Communication Dept. to program game allowing exploration of the problem of performance-enhancing drugs in the Tour de France. Parser can understand fairly complex english. Written in inform.
• Personal projects
• Solar quest video game.
Based on the Golden board game. Unfinished, but has an intro, background, music, crippled interface to gamecards, tons of graphics and astronomical data from Nasa and JPL. Written in allegro/C++.
• Final phantasy star video game.
Based on Sega's RPG series. Unfinished, but has animated story intro, a 3d dungeon, items, menus, characters, a town, overworld, awesome music from the phantasy star cd. Written in allegro/C++.
• Dots-n-boxes video game.
The classic pen-and-paper game. Includes a very powerful AI that uses a combination of algebraic methods, backtracking, and special case strategies. Can set players 1 or 2 to either human or computer. Decent graphics and music. Written in allegro/C++.
• Current project
• Create generic framework for multithreaded, secure, command line driven client/server software.
Goal: make generic enough to produce multiplayer online monopoly game.

Last modified: Thu Aug 27 07:40:45 PDT 2009