I would first like to thank my advisor, Ravi Sundaram. I am grateful to him for taking me on as a student and sharing with me his enthusiasm for computer science and mathematics. Ravi has never hesitated in promoting the well-being of his students and has guided me through every step of graduate school whether it be on the research side, administrative side, or personal growth. I greatly appreciate all the opportunities he has given me in both academia and industry, and I'm glad to call him a mentor.I am also grateful to the faculty, researchers and fellow students of the CS Theory Group. In particular, I thank Rajmohan Rajaraman for his advice, encouragement and help navigating the university during my time there. A number of members in the theory group were instrumental in building a wonderful academic environment where I was able to share my enthusiasm for computer science and mathematics: