Projects

Selected Academic Projects

Integrated Smart Home Automation using OpenHAB Platform, supervised by Dr. Michael Swift, Dr. Raj Veeramani and Dr. Thomas Yen, Spring 2016.

Summary

Home automation (HA) is gaining much more popularity with advances in Internet-of-Things as currently various open-source and commercialized projects are available for connecting smart home kits to each other for controlling home appliances like OpenHAB, Home Assistant (hass), Domoticz, OpenMotics, OpenRemote in the open-source section and CommandFusion, Savant, RTI to name a few commercial products. In this master’s project, I have selected OpenHAB open-source (GPLv3) home automation bus which is a multi-platform, hardware agnostic, using Java OSGi (Open Service Gateway initiative) that can support any home automation protocols depending on the available bindings. OpenHAB is used for integrating and interoperability of various smart homes (ex. Insteon, WeMo, Ecobee), applications and softwares (like IFTTT, MySQL, etc) and can be considered as glue of the Internet of Things. I have been dealing with setting up both Raspberry Pi 2 and 3 model B version 2, installing and configuring OpenHAB middleware version 1.8.1, setting up Insteon, SmartThings, Belkin WeMo and Philips Hue smart home kits each independently of OpenHAB, controlling each of the the aforementioned kits using Amazon Echo, and configuring OpenHAB so that it can control each of the kits independently of other kits. The final goal of this project was having OpenHAB control an item from smart home kit A based on an event triggered from smart home kit B. This is of importance because without using a third party software like OpenHAB or Amazon Echo HA bridge, users wouldn’t be able to turn on Philips Hue lamp and change its color to red if Insteon motion sensor detects motion due to incompatibility issues. However Insteon allows you to turn on the light bulb connected to its Insteon switch if you define a rule upon the Insteon motion sensor being triggered. This master’s project involved a thorough understanding and survey of setting up various smart home kits each using different communication protocols, conducting various experiments for each smart home kits separately and altogether, networking and Linux troubleshooting, learning how to setup an open-source software based on my needs and how to contribute to the open-source community.

Skills

  • OpenHAB
  • Raspbian
  • Raspberry Pi 2 & 3
  • Home Automation
  • Internet of Things

Deploying Mercury Hybrid Centralized and Distributed Scheduler in a Geo- Distributed Fashion, supervised by Dr. Aditya Akella, Fall 2015.

Summary

Scheduling large and diverse workloads is inherently hard, and existing approaches tackle this in two alternative ways: 1) centralized solutions offer strict, secure enforcement of scheduling invariants (ex. fairness) for heterogeneous applications, 2) distributed solutions offer scalable, efficient scheduling for homogeneous applications. Mercury is a hybrid resource management framework that supports the full spectrum of scheduling, from centralized to distributed. Mercury paper authors argue that these solutions are complementary, and advocate a blended approach. The Mercury framework harnesses this flexibility by opportunistically utilizing resources to improve task throughput and claims 35% improvement in throughput. However, modern data needs and consumption patterns have thrown data across datacenters and performing well in a single data-center is no longer enough. This project tried to evaluate Mercury in a geo-distributed setting and suggest potential solutions to make it work better. This work tests Mercury in various cluster configurations, with uniform and non-uniform resources to profile it.

Skills

  • Apache Tez
  • Apache Yarn
  • Hadoop
  • Gridmix
  • Big Data System Troubleshooting
  • CloudLab
  • Ubuntu
  • Bash Scripting

Performance Tuning in Hive/MR, Hive/Tez, Apache Storm and Apache Spark, supervised by Dr. Aditya Akella and Robert Grandl, Fall 2015.

Summary

  • Understood how data analytics stacks work and the factors influencing their performance.
  • Deployed Hadoop, a widely used data analytics framework.
  • Ran SQL queries "jobs" atop Hive using two different types of underlying execution frameworks, namely MapReduce and Tez.
  • Estimated the performance of a Hadoop-style data analytics stack under specific operating parameters.
  • Critiqued the parameter choices for a specific deployment and workload, given details on the data analysis being conducted and the operating environment.
  • Learned how data analytics stacks work and the factors influencing their performance.
  • Deployed SPARK, an in-memory big data analytics framework and one of the most popular open source projects nowadays.
  • Ran a set of SQL queries atop SPARK SQL using SPARK standalone as an execution framework and HDFS as the distributed file system.
  • Learned how to use various SPARK contexts and how to write my own driver program and queries using SPARK API.
  • Reasoned about SPARK's performance under specific operating parameters.
  • Reasoned about performance of recurring jobs when various RDDs are cached.
  • Wrote simple data analytics applications.
  • Deployed Apache Storm, a stream processing engine to process real-time tweets.
  • Analyzed implementing several graph processing and machine learning applications using GraphX and MLlib running atop SPARK.
Project report 1
Project report 2

Skills

  • Hadoop MapReduce
  • Apache Tez
  • Apache Spark
  • Apache Storm
  • Big Data Analytics
  • Performance Analysis
  • CloudLab
  • Ubuntu
  • Linux Troubleshooting


Learning Over Joins, using Factorized Machine Learning algorithms for enhancing the join algorithms, supervised by Dr. Jeffrey Naughton and Arun Kumar, Spring 2015.

Summary

  • Created a GUI for the app using Shiny
  • Learned about Factorized Learning
  • Learned about various joins in databases
  • Researched about Machine Learning libraries in R

Skills

  • R
  • CSS
  • Twitter Bootstrap
  • Shiny
  • Databases
  • Machine Learning

Scrobbling 2.0: An enhanced prototype for Last.fm Website

Summary

  • Finding major UI/UX issues in Last.fm Website
  • Conducting Contextual Inquiries (CI) with 3 Last.fm users
  • Transcripting, tagging and categorizing the recorded CI interviews
  • Creating affinity diagrams out of CI
  • Designing sketches for data management, plugin recommendation, and privacy
  • Prototyping never-ending shout-outs feature
  • Prototyping Granular Privacy Setting
  • Prototyping improved event tab by track and by artist
  • Conducting Usability Testing interviews with 3 different Last.fm users that the CI ones
  • Evaluating the tasks performance using the Usability Testing interview
Project report

Skills

  • InDesign
  • Contextual Inquiry
  • Usability Testing Interview
  • Prototyping
  • Brainstorming

JPEG Image Compression, Spectral Correlation, IIR and FIR Filter Design with Application in ECG, MinMax Equalizer and Windowing using MATLAB as well as A Survey on Image Segmentation using Spectral Clustering, as part of ECE630 Course, supervised by Dr. Barry Van Veen, Spring 2014.

Summary

Various signal processing algorithms using MATLAB for image processing

Skills
  • MATLAB
  • Image Processing
  • Signal Processing

Survey on Community Mining in Social Networks, supervised by Dr. A. Doan, Spring 2014.

Summary

  • Researched about various techniques for detecting communities in social networks
  • Used R community detection package iGraph for detecting communities in a graph
  • Used SNAP social graph dataset for benchmarking the various algorithms for community detection in social networks
Project report

Skills

  • R
  • iGraph
  • Clustering
  • Community Detection
  • Social Network Analysis

Implemented Command Line Interpreter(Shell), Memory Management Module, Kernel Threads in Linux Environment as well as Modifying xv6 Simulator to Support Multi-Thread, and Lottery Scheduling, as part of operating system course, supervised by Dr. Remzi Arpaci-dusseau, Fall 2013.

Summary

  • Various improvement to the basic XV6 Linux Kernal
  • Learn debugging C code using GDB
Project github repo

Skills

  • XV6
  • C
  • RedHat Linux
  • GDB
  • System Calls
  • Operating Systems


DySER, use of accelerators beside OpenSparcT1, on VIRTEX 7, supervised by Dr. K.Sankaralingam, Fall 2012.

Summary

  • Installed DySER on RedHat Linux
  • Learned about DySER architecture and flow
  • Learned how to put hooks before/after ROIs in a DySERized code
  • Learned how to work with Virtex-7 FPGA
  • Implemented OpenSplyser on Virtex-7 VC707 FPGA
Project report

Skills

  • DySER
  • Virtex7 FPGA

Exploiting Heterogeneity in Amazon EC2 Cloud for Better Pricing and Better Availability using CloudMeter Simulator, supervised by Dr. Mike Swift and Dr. Shan Lu, Fall 2012.

Summary

In this project I aimed to provide a client-side strategy management for selecting the nodes from EC2 and migrating the instances depending on various metric including node capabilities and needed performance. The aim of this project was gaining more efficiency improvement through use of better policies and assigning the best node type of each zone as a duplication in the bundle of nodes which I select for a client. In case of failure in EC2 nodes or overload in any of the primary nodes selected by client, load will be migrated to another sub-type node in the client node bundle within the same instance type.
Project report

Skills

  • C++
  • Benchmarking
  • Performance Analysis
  • Eclipse IDE

Design of a fully 5 stage pipelined MIPS processor with 2-way set associative cache using Verilog & Synthesized with Design Compiler, supervised by Dr. David Wood, Spring 2012.

Summary

Designed cache, ALU, and four-bank memory for a pipelined processor in Synthesizable Verilog

Skills

  • Verilog
  • HDL Synthesis
  • Computer Architecture

A Survey on Near-duplicate Video Detection Methods using YouTube API, Google App Engine, Hadoop, and Condor, supervised by Dr. Christopher Re, Winter break 2011-2012.

Summary

  • Performed a literature survey in video duplication
  • Researched about various video benchmarks
  • Researched about various duplicate image and video detection systems
  • Extracted video keyframes from videos
  • Ran various image feature algorithms on video keyframes
  • Used Hadoop MapReduce and Condor for video keyframe processing
  • Used YouTube Python API to extract various information from videos
  • Learned to work with psycopg2 and Postgresql

Skills

  • YouTube Python API
  • psycopg2
  • Postgresql
  • Condor
  • Hadoop MapReduce
  • Image features extraction

Programming a Robot for Automated Arabidopsis Photography in Study of Roots using Visual C++, supervised by Dr. Amir Hossein Asadi, Fall 2011.

Summary

  • Worked on an automated data acquisition system
  • Controlled the robot using Visual C++ code to take photos of petri dishes
  • Processed the raw images for further analysis in MATLAB
  • Used Sobel algorithm in MATLAB for edge detection
Project presentation

Skills

  • Visual C++
  • MATLAB
  • Edge Detection
  • Image Processing

Designing as well as Upgrading the Persepolis Research Group (at UW-Madison) Website using Joomla CMS,(A Joint work with Mohammad Khabbazian), Summer and Fall 2011.

Simulation-Based Fault Injection for Analyzing Embedded Processors Behavior under EMI and PSD, supervised by Dr. Seyed Ghassem Miremadi, Fall 2010.

Importing ARM ISA into PTscalar from SimpleScalar, supervised by Dr. A.Ejlali, Summer 2010.

Hardware Implementation of a Fast Improved Decimal Multiplier Using VHDL, supervised by Dr. Ali Jahanian, Summer 2009.

Implementation and Synthesis of MIPS-R2000 using VHDL and Leonardo Spectrum, supervised by Dr. Ali Jahanian, Spring 2009.