master's thesis by Abdelrahman Elogeel, Computer Science & Engineering, University of Washington, 2015