Academic Projects
Graduate Work
Below are some of my projects at UCSB. The majority of these are written in Java, some are C/C++. and most use Perl and GNUPlot for the data extraction and manipulation.
GCMPS 276 - Advanced Networking
Probably the most interesting/enjoyable course I've taken. Operating systems are fun, but network systems are so much more unpredictable and challenging. Here are the write-ups for the final project and one homework assignment.
Manycasting in MANETs
Manycast is a group communication protocol that is used when one wishes to contact a subset of the nodes avaiable through multicast. We propose and implement more efficient ways to perform manycasting in mobile ad-hoc networks. We propose two methods for achieving efficient manycast; Expanding Ring Search and Manycast Tree. Our simulations confirm that there do exist more efficient Manycast methods than those initially described in the literature
UDP Congestion Control
The monitoring and reporting mechanisms added for this project make up a protocol that effectively allows UDP flows to adapt to network congestion as it is observed through measured Round-Trip Time (RTT) and reported packet loss. The protocol is tested in the proposed unicast layered video streaming application. This makes for a fair sharing and balanced method of supporting congestion aware UDP transport.
Experiment results in this paper show that bandwidth is shared fairly with the protocol written and that sending rates eventually converge to network equilibrium much in the same way that long running TCP flows do. The protocol is also highly adaptive to dynamic network conditions. Careful mechanisms were put in place to handle the exponential increase and decrease in traffic associated with subscription level changes of the proposed application.
GCMPS 290I - Java-centric Network Computing
A monitoring and administration tool built in JAVA2/Swing that used RMI to gather system and application statistics from hosts in a Jicos network. The statistics were displayed in a GUI along with controls to shut-down and start-up nodes in the network
GCMPS 240B - Parallel Programming
Besides learning MPI and how to parallelize centralized programs, we have learned a great deal about cluster computing and the efficient and scalable management thereof. Our final project was a migration strategy and working implementation on a cluster running the Neptune API. This is the project that my Masters thesis was based upon.
GCMPS 230B - Advanced Algorithms
The final project in this class is a comprehensive analysis of a newly proposed open problem called the peer matching problem. It has applications in Peer-to-Peer computing and attempts to optimize the network resource usage for a given configuration of peers able to download files from one another
GCMPS 270B - Distributed Systems
After studying distributed system concepts we put a few into use for a distributed document repository. The repository uses a distributed hash table to record the presence of documents stored at individual workstations. The repository does not require serialization of the updates in order to remain consistent. This is performed through the use of local clocks, eliminating the need for global synchronization.