** 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) |