This page provides short descriptions of the projects that I worked on or currently working on. My code is usually open-sourced at GitHub.

Research Projects

AIMS: Adaptive Intrusion Management System

Intrusion attacks on software systems are more common than you might think. In this project, we go beyond intrusion detection and focus on developing automated response and recovery mechanisms to allow software systems to become intrusion tolerant in a satisfactory manner.

Tornado: A Sptaio-Textual Stream Processing Engine


We are building a stream processing engine based on Apache Storm to answer spatio-textual queries over data stream in real-time. We utilize an adaptive load balancing technique for the system workload. Further, we provide a rich map-assisted query interface that allows users to compose arbitrary queries. Collaborators: Ahmed R. Mahmood, Ahmed M. Aly, El Kindi Rezig, Anas Daghistani, Amgad Madkour, Ahmed S. Abdelhamid, Mohamed S. Hassan,Walid G. Aref, Saleh Basalamah. Check out our paper. [PDF]

AQWA: Adaptive Query-Workload-Aware Partitioning of Big Spatial Data


In this project, we introduced a technique for speeding up spatial queries (e.g. range and knn queries) over spatial data in Hadoop MapReduce. This technique is adaptive to the query workload as it progressively splits partitions based on a statistical cost function. The splitting will allow more parallelism in the reduce phase which will contribute to the speedup. Collaborators: Ahmed M. Aly, Ahmed R. Mahmood, Mohamed S. Hassan, Walid G. Aref, Mourad Ouzzani, Hazem Elmeleegy. Check out our paper. [PDF]

Course Projects

Listening to File CRUD events in Tachyon

In this project we aimed to seamlessly extend the current API without breaking the current implementation. To do that we introduced a Java class called FileEventTracker, that augments the current Tachyon client API with file event notifications. It allows registering one or more event listeners to a certain path. The listeners must implement a Java interface called FileEventListener to listen to events. This was part of a course in Operating Systems at Purdue. Collaborator: Yiyang Chang

Semantic Knowledge Representation of Moving Objects

In this project, I studied how to represent the semantic knowledge of moving objects so that we can perform logical inference to obtain relationships among them. I used the concept of Semantic Network (SN) to represent such knowledge. An instance of the (SN) is dynamically built given a stream of updates for a set of moving objects. I implemented a visualization interface to visualize the semantic network as it updates itself. Furthermore, given a set of logical inference rules that can be applied on the SN, we can obtain additional relationships among moving objects. This work was done as a part of a course in Multimedia Systems at Purdue.

Evaluation of Memcached with Heterogenous Servers

We studied the performance of Memcached deployed over heterogenous servers (i.e. servers with varying RAM and CPU specs). We used the Yahoo Cloud Serving Benchmark (YCSB) for this purpose. Furthermore, we introduced a modification to the Memcached client to be aware of the fact that the servers are heterogeneous which resulted in increased performance. This project was part of a course in Computer Systems Network at Purdue. Collaborator: Mosab Khayat.


We designed and implemented a full-fledge database system in Java.  This includes Command-line-interpreter (CLI), buffer manager, and query processing engine. This was part of a course in Database Systems at Purdue. Collaborator: Mohammad Qudeisat

Tiny Language Compiler

I designed and implemented a full-fledge compiler for a simple language as a part of a course in Compiler and Translation Systems at Purdue.

Browsing Amazon: A Visual Analytics Approach

In this project, I designed and implemented a visual analytics tool for browsing products at Amazon. This was part of a course in Visual Analytics at Purdue.

"You only need to know one thing; you can learn anything" – Khan Academy