MIT  Class Projects
        
        
          [ My 
MIT Home | MEng Thesis | Projects | MIT Admissions |  
Pictures | Quotes | Schedule 
| Simmons Hall | Timpani 
]
        
        
        MSMMOS - A Graphical Operating System
        6.828 Fall 2005 
        
Named the Martijn Stevenson and Michael Matczynski Operating System, MSMMOS is an x86 operating system developed in 6.828, the MIT Operating Systems class. Most of the work was done during the labs of that class, which encompassed memory management, environment creation, a file system, and a text shell. MSMMOS is an extension of the 6.828 JOS microkernel operating system. 
        For the final project (objective: impress the staff), we developed a full window system and several user mode applications. We implemented a mouse driver, VGA driver, and window manager. We also defined a windowing interface consisting of keyboard events, mouse events and refresh requests that user applications use to interact with the window manager. Applications include a paint program, eyes, a bouncing ball, and a full text shell interface (using a font). The final product looks and feels like Microsoft Windows 3.1.
        
MSMMOS image file available upon request 
        MORRIS - A Distributed File System for Read-Intensive Applications
          6.824 Spring 2005 
        
MORRIS is a distributed file system that was built on top of the 6.824 NFS 3 file system developed in class. This project aimed to increase performance, specifically when serving large amounts of data to read-intensive applications. Data stored on our servers was striped across a number of different block servers, allowing for a server solution that is highly scalable.
        One thing I learned from this project is that the audience needs to be considered carefully when choosing a final class project. Building a distributed file system is great, but presenting it during class was difficult when competing against other sexier projects. 
        
Read 
          the report
        Global Illumination, Caustics, and Animated Water
          6.837 Fall 2004 
        
I've always been fascinated by caustics caused by moving water. Thus, for my final project in 6.837, Computer Graphics, I decided to implement moving water and caustics using global illumination. To begin, I first wrote a program to create a sequence of scene files that would be used by the image renderer to create each frame of motion. I programmed equations for both linear and circular waves, using these forms to deform a mesh of hundreds of triangles.
        Next, I needed to add global illumination to create the caustics, which are areas of bright, focused light. I used concepts from the book "Realistic Image Synthesis Using Photon Mapping" by Henrik Wann Jensen. Photon Mapping is a brilliant technique used to produce global illumination and caustics. The basic premise is that a light source in the scene emits thousands of photons in the direction of the light. These photons bounce around the scene until they hit a diffuse surface. This photon is stored and later used to calculate brightness during the final image render.
        In addition to the moving water, I also created scene that changes the index of refraction of a glass sphere.
        
Watch 
          changing index of refraction (5MB)
        
Watch 
          animated water with circular waves (2MB)
        
Watch 
          animated water with linear waves (2MB)
        
View the presentation 
        PaintDude - Painting LEGO Robot
          6.115 Spring 2004 
        
In 
          the Spring of 2004 I created an electronically controlled painting 
          robot as my final project in 6.115, 
          Microcontroller Project Laboratory. I began the project by creating 
          a painting structure out of Legos. I then mounted 
          stepper motors, servos, and sensors. These components were interfaced 
          to an 8051 microcontroller and connected to a computer via USB. I 
          wrote code in assembly to control the robot's motion and wrote a program 
          in Java to convert an arbitrary bitmap file to a format readable by 
          PaintDude. The results speak for themselves.
        
Watch PaintDude in action (30MB)
        
Read 
          the report
         
         
         
        
 
        
        
              
                Questions? Comments? Share your thoughts on the Discussion Forums...
                 
                
if ($google) {
	echo $googlerectangle;
}
else {
	echo $yahoorectangle;
}
?>