Fun Projects

A 32-bit protected OS

Just for fun, I started writing a small OS a while ago. It is too much to call it an OS at this stage. Until now, I have been successful in switching to protected mode and enabling the interrupts. I have also written down code for handling different terminals. But for these features, it has no other functionality. I wrote these during the MS-DOS days. So, it might be quite outdated. Feel free to download the code below and play with it.

Here is the code : (12.5 KB) or os.tar.gz (8.28 KB)

Fire simulation

Similar to a program in MSDN samples. To run: appletviewer -classic Fire.html

A screen capture of the Fire program

Here is the code: (2.62 KB) or fire.tar.gz (2.43 KB)

3d Shading in Java

I wrote this during my undergraduate days. I was learning Java and had taken a course on computer graphics. To put my knowledge to test, I wrote this set of java programs that does isometric projection, Gourad shading, texture mapping, and so on. The code may not be readable as it is poorly documented, but feel free to download and play with it. The main screen contains menus that lets you navigate through the various features.

Here is the zipped code : (23.6KB)

A screen capture of the
Java3d program
Bus Timetable

When I was in grad school, I got sick of having to lookup the Madison metro timetables to find the next bus to my house. To make my life easier, I wrote a small program to display the next available bus from the CS department bus stop. Subsequently, we also extended it to map the bus stops using the Google maps API. I have not updated these pages in a while. It is quite likely that the bus times are outdated.
Performance enhancements for superscalar processors

Abstract: Superscalar processor design has been the standard for building good performance computers. This project aims at investigating enhancements to a base superscalar architecture to further improve the performance. The project consists of two main phases. A limited resource availability is assumed (32k of RAM to be distirbuted among L1 caches, branch predictors, BTB, enhancements). With this assumption we try to achieve the best possible performace by tweaking cache and branch predictor configuration. In the second phase, the baseline architectiure is extended with performance enhancement features. The total RAM available for the enhancements is again within the 32K.

Paper available as: [PS]

Computing k-bisimilar partitions of split graphs

Abstract: The problem of indexing paths in graph structured data has received considerable attention of late. Techniques have been proposed to use bisimilarity to index data graphs. We focus on computation of an index graph called the A(k)-index, which is a k-bisimilar partition of the graph. Traditional techniques to compute the k-bisimilar partition work on the whole graph. In this paper, we propose an algorithm to compute the k-bisimilar partition when the graph has been split into two or more subgraphs. This technique can be used in the computation of the A(k)-index on data graphs of arbitrarily large sizes.

Paper available as: [PDF]


   This was done as a part of the 736 course. It involved changing the existing implementation of kangaroo to make it support multiple paths to the destination. You can know more about kangaroo here

Abstract: Kangaroo is a wide-area data movement system that provides high-throughput data movement by overlapping CPU and I/O. Though Kangaroo is a persistent data mover, network/disk failures can reduce data availability, because, Kangaroo can't route the data around failures. We demonstrate that by using multiple paths to the destination, we can improve availability without significant overheads. In our architecture, the sender is responsible for message ordering. We also use TCP's flow control mechanism to implicitly route more data along paths that offer higher bandwidth. In future we expect to study the scalability characteristics of our implementation. Also we envision to automatically discover routes to destination and ensure quality of service for clients that require high QOS guarantees.

Paper available as: [PDF]

All source code available here: Gzipped tar file