Teaching

Fall 2019:    Principles of Information-flow Security   (COM S 580, Iowa State, Graduate level)
Fall 2019:    Operating Systems   (COM S 352, Iowa State, Undergraduate level)
Spring 2019:    Principles of Information-flow Security   (COM S 641, Iowa State, Graduate level)
Spring 2019:    Operating Systems   (COM S 352, Iowa State, Undergraduate level)
Winter 2017:    Parallel and Distributed Computing   (SFTWRENG 3SH3, McMaster, Undergraduate level)
Winter 2017:    Operating Systems   (SFTWRENG 3SH3, McMaster, Undergraduate level)
Fall 2016:    Logic and Discrete Math in Software Engineering   (CAS 701, McMaster, Graduate level)
Winter 2016:    Operating Systems   (SFTWRENG 3SH3, McMaster, Undergraduate level)
Fall 2015:    Logic and Discrete Math in Software Engineering   (CAS 701, McMaster, Graduate level)
Fall 2015:    Principles of Programming   (SfwrEng/CompSci 2S03, McMaster, Undergraduate level)
Winter 2015:    Distributed Algorithms   (CAS 769, McMaster, Graduate level)
Fall 2013:    Computer-aided Verification   (CS745/ECE725, Waterloo, Graduate level)
Fall 2013:    Logic and Computations   (CS245, Waterloo, Undergraduate level)
Fall 2012:    Computer-aided Verification   (CS745/ECE725, Waterloo, Graduate level)
Fall 2012:    Logic and Computations   (CS245, Waterloo, Undergraduate level)
Fall 2011:    Operating Systems   (CS350, Waterloo, Undergraduate level)
Winter 2011:    Computer-aided Verification   (ECE725/CS745, Waterloo, Graduate level)
Summer 2008:    Operating Systems (CSE410, Michigan State, Undergraduate level)