- Ph.D. in CIS, University of Pennsylvania, 2001
- M.S. in CIS, University of Pennsylvania, 1996
- B.S. in CS with honors, Pennsylvania State University, 1993
Michael W. Hicks is a professor in the Computer Science Department and UMIACS at the University of Maryland, College Park. He received is Ph.D. in Computer and Information Science from the University of Pennsylvania in August 2001, and then spent one year as a post-doctoral associate affiliated with the Information Assurance Institute of the Computer Science Department at Cornell University. During academic year 2008 he spent his sabbatical in Cambridge, England visiting Microsoft Research and the University of Cambridge Computer Laboratory.
His research focuses on using programming languages and analyses to improve the security, reliability, and availability of software. Noteworthy among his research accomplishments is the development of analysis and compilation tools for enabling software to be safely updated without shutting it down. He has explored the design of new programming languages and analysis tools for automatically discovering or remediating software flaws and security vulnerabilities. He has also conducted studies on the utility of defect detection tools according on outcomes of human users, and explored distributed systems design and evaluation, particularly when adaptivity and security are system goals. Recently he has turned his attention to exploring means for securing remote and distributed computations among untrusted parties by combining cryptographic and programming language techniques.
During his career he has published more than 85 refereed conference and journal papers, many in highly selective venues. He won the ACM SIGPLAN Doctoral Dissertation Award in 2001, and an NSF CAREER award in 2003, and has three times won the Department of Computer Science's Faculty Teaching Award. He recently served as Program Chair for the 2012 ACM Symposium on the Principles of Programming Languages, the premier venue for theoretical contributions to programming languages.