First and foremost, I wish to thank my advisor Dr. Haibo Zeng for his guidance throughout my masters. His consistent support and sound advice during the course of this research will remain as a solid foundation in my future professional career. I am grateful to him for always steering me in the right direction with his innovative ideas, great knowledge and experience. In the past year, he has not only helped me grow as a researcher but also as a professional with his mentorship. Lastly, I wish to thank him for being so patient with me, as without his support this thesis would not have been possible. I wish to thank the experts on my review committee Dr. Cameron Patterson and Dr. Patrick Schaumont for taking time out of their busy schedule to read this thesis and providing valuable feedback. I also wish to thank them for teaching me two of the best courses I have had the opportunity to attend at Virginia Tech. I am grateful to Yecheng Zhao for all his help during the course of this project. Being new to this domain, I was easily overwhelmed and confused in the beginning. But he patiently handled all my doubts and helped me understand the fundamental concepts of software programming as well as real-time systems. I will forever be indebted to my family back home for being the constant source of encouragement and support in my life. I wish to thank my labmate Prachi Joshi for being so helpful and providing valuable tips and suggestions on writing this thesis. I am thankful to my friend in Michigan, Uthara Menon for her support, motivation and advice on life in general. I would also like to thank all my