Stephen DiVerdi

Computer Science Portfolio

As a graduating senior at Harvey Mudd College in the Computer Science department, I've done a lot of interesting work in various fields. I maintain this page as documentation of that work, so I can point people to it as an example my computer science knowledge and programming abilities.

First, a little bit about myself. I'm most recently from Fort Collins, Colorado, where I graduated from Fort Collins High School in spring, 1998. I was accepted at Harvey Mudd College, in Claremont, California, and started that fall. Originally, I had hoped to study biochemistry, but my love of computers won in the end. I also originally hoped to pursue a degree in math in addition to computer science, but a double major at HMC is next to impossible. Within Computer Science, my primary interest for a number of years was artificial intelligence. However, after my senior year, I've been convinced otherwise - my primary interest, which I'd like to pursue a graduate degree in, is computer graphics.

I currently have a GPA of 3.54, and expect to graduate this May with something slightly higher. One thing HMC is notable for is its lack of grade inflation - the average GPA of an HMC graduate is approximately 3.0. In the 50 year history of the school, there have been only five 4.0 graduates. A 3.54 at this school puts me in the top 5% of my fellow Computer Science majors, and it's a GPA that I'm extremely proud to have earned through my four years of hard work. I have a major GPA of 3.81, which ranks me as number 4 among the other Computer Science majors here at HMC.

A current resume is available here, along with a current transcript. My transcript shows that even though I eventually decided not to pursue a second major in math, I have still taken all of the required math classes and am only one elective and a senior thesis project short of the degree.

Now for the interesting part of this portfoliio - my projects. Below are the major projects I've worked on and the upper-division Computer Science courses I've taken, in chronological order. They cover a wide range of disciplines and show how my interests have changed in the last few years. Also, each project has some example images or code where applicable, to give an idea of the scope of the work. Probably the most interesting are at the bottom, during my senior year under Fall 2001 - Fall 2002.

Before Fall 1998

First Program - code listing - This is the first program of mine that my family has record of. You can see I had an early start, when I needed a little help remembering my multiplication tables. This program was written for a Tandy TRS-80 Color Computer with a BASIC operating system.

Fall 1998 - Fall 1999

Java Applets - applets - As a freshman at HMC, the first language we learn is Java. The second semester computer science course then teaches the intricacies of applets, among other things. These two courses got me so excited about Java that I proceeded to write a number of applets around that time to try a few things out. The applets included here were written between fall 1998 and fall 1999, and include a fractal generator, a maze solver, and a minesweeper knock-off.

Fall 2000 - Fall 2001

Large Scale Development - website - As a junior in Computer Science at HMC, I'm required to take a Large Scale Development class in preparation for Senior Clinic. This class involves learning the details of software development, design patterns, and program correctness. The work for the class is a semester long project with a team of students for some faculty on campus. My team developed a program called GateBuilder, which is a Java application for creating and evaluating logical circuit diagrams, for use by our Introduction to Computer Science class. As team leader, I had the added responsibilities of motivating my team, running meetings, and coordinating our efforts.

Artificial Intelligence - (none) - The work for this introduction to artificial intelligence course involved implementing a number of standard ai algorithms. We wrote an A* search engine, an alpha beta minmax game player, a neural network for character recognition, and a genetic algorithm engine.

Computer Networks - example file complete source - The most interesting work of this class was our final project, which involved retrieving an RFC 1350 from the IETF and implementing it. This RFC is the specification for the TFTP protocol, and once we had our clients and servers finished, we had to test them for compatibility with each other's and a few publicly available versions.

Parallel and Real-Time - (none) - This course involved learning a variety of parallelization techniques and libraries, followed by real-time programming theory. The projects included programming using pthreads, MPI, and PVM. The final project was a parallel genetic algorithm in PVM for scheduling processes with priorities and dependencies on a multi-processor system.

Fall 2001 - Fall 2002

Computer Graphics - project summaries - This class covers an introduction to the field of computer graphics, and is what originally got me excited about the field. The projects were time-consuming, but the results were very rewarding. We covered a very wide range of topics, including image processing, ray tracing, and polygon rendering. My final project was a realistic cloth simulation using a mass and spring model.

Computer Animation - project summaries - Animation is the experimental second semester to graphics, building on what we learned there. We started off with curves and are moving on to keyframe animation and facial and character setup. Our projects include a subdivision surfaces modeller, a keyfram animator, a kinematics controller, and some final project to be determined, along with learning to use the professional animation package Maya to contribute to the class film.

Senior Clinic - website - As a senior in Computer Science at HMC, I'm required to participate in what's known as the Clinic program, through with teams of students are paired with a faculty advisor and a company, and are guided through working on a real-world project. My team is working with United Devices, the company responsible for, and producer of a massively distributed computing architecture. Our project is to port two widely used, public-domain biomedical applications, RepeatMasker and PHYLIP, to this architecture. This involves analyzing the algorithms each program uses, divising a parallelization scheme, and modifying the programs according to that scheme, while maintaining as much of the original structure as possible. As team leader, I have many responsibilities in addition to the programming work, including running team meetings and resolving conflicts.

Senior Research - website - Based on Jason Wither's final project for Graphics in Fall 2001, he and I developed a research project to do during our last semester with Professor Elizabeth Sweedyk, our graphics and animation professor. The project involves implementing a traditional radiosity renderer, styled after standard progressive radiosity techniques, and the modifying the algorithm to allow the radiosity technique to calculate specular lighting in addition to the usual diffuse lighting. This project will last for the entire semester and will probably end up around 10,000 lines of code.

Vision Study - project - Jason Wither and I both were interested in taking Computer Vision for our last semester at HMC, but it wasn't being offered, so we decided to do an independent study instead. Advising us is Professor Zach Dodds, who normally teaches the vision class. The study consists of a semester long project which will explore various methods of object tracking and recognition, with the final result being a head tracker that will animate the position, orientation and expression of a corresponding 3D modeled head in real time.

All works copyright 2002 Stephen DiVerdi