Personal Projects Interest Education courses Publications Experience Honors




Cooperative Transmission  Wireless MAC

Cooperative transmission involves rethinking the link abstraction in wireless networks, its interface to nearby layers such as the physical layer and network layer, and indeed much of wireless network architecture. Within the lower protocol layers, cooperation involves distributed signal processing for coding, synchronization, equalization, and decoding among closely located radios, potentially increasing the robustness of transmissions to multipath fading, node mobility, and so forth. We designed a new cooperative MAC layer protocol that allows multi senders multi receivers per each link and allow nodes on the path between source and destination to recruit nodes to cooperate with them in the transmission/receiving of packets. We analyzed the performance theoretically and using simulations and the results show how much energy is saved using this protocol which improves the performance of sensor networks using such a protocol.

Multi Channel Wireless MAC

As commodity wireless network cards support the usage of orthogonal channels, allowing multiple simultaneous communications on these channels will improve the performance of wireless networks. Increasing the throughput with multiple channels available is a challenging problem as solving issues like the rendezvous problem and the hidden terminal problem in a multiple channel environment is much harder than in single channel environment. Previous MAC protocols either failed to solve some of these problems or were expensive to implement as they needed more than one packet radio per node or required synchronization or caused network partitioning. We designed a new MAC protocol that uses hash functions to distribute the control overhead over all the channels. In addition, it uses busy tones to reserve the channels and solve the hidden terminal and the channel rendezvous problems in multi channels. To the best of our knowledge, this is the first MAC protocol with single packet radio per node that does not require synchronization or a dedicated control channel and does not cause network partitioning. The results show that our protocol utilizes the multiple channels available to increase the capacity of the network, especially in high congested networks. The proposed protocol is expected to improve the usage of ad hoc networks as, it is practical and it does not need synchronization like previous protocols.

Meta clustering

Meta clustering is a new approach to the problem of clustering. Meta clustering aims at creating a new mode of interaction between users, the clustering system, and the data. Rather than finding one optimal clustering of the data, meta clustering finds many alternate good clusterings of the data and allows the user to select which of these clusterings is most useful, exploring the space of reasonable clusterings. To prevent the user from having to evaluate too many clusterings, the many base-level clusterings are organized into a meta clustering, a clustering of clusterings that  groups similar base-level clusterings together. This meta clustering makes it easier for users to evaluate the clusterings and efficiently navigate to the clustering(s) useful for their purpose.

Ornithology Data Mining

Performing data mining on data from the Project Feeder Watch ornithology survey. This project is collaboration between the Lab of Ornithology and the CS department. In this survey, many thousands of biologists and citizen volunteers collect bird abundance data from all around the US and Canada. The high-level goal of the project is to take this raw data and to transform it into something readily accessible and understandable by everyone to explore changes in bird abundance. This project is for the birds!

Load Balancing on Web Servers

We designed a new protocol for load balancing on we web servers. Unlike previous protocols, the new one is more flexible as it gives the client the opportunity to select his own criteria of satisfaction from a connection, using constraints on average response time, packet loss and number of connections. In case of being unsatisfied, the protocol runs an algorithm to determine another server to connect to. Servers are monitored through an efficient peer-to-peer periodic randomized probing protocol. The information about the status of each server is propagated between the clients through gossip messages. The protocol separates the two components; low performance detector and Dissemination component. Experiments were done on a large cluster of commodity PCs, and results show that the load can be fairly balanced among servers for more than 90% of the time.