My thesis for my MS in Computer Science at the University of Illinois, Urbana Champaign, 2013