Teaching Assistant
- Component Base Software Engineering, University of Waterloo, Fall 2013, Fall 2011, Winter 2008.
- Data Structures and Algorithms, University of Waterloo, Spring 2012.
- Operating Systems, University of Waterloo, Fall 2011.
- Engineering Design for Embedded Systems, University of Waterloo, Spring 2011.
- Software Architecture and Design, University of Waterloo, Spring 2011, Spring 2010,.
- Software Testing, University of Waterloo, Winter 2011, Winter 2010, Winter 2009.
- Programming Languages and Translators, University of Waterloo, Fall 2010.
- Introduction to Computer Structures & Real-Time Systems, University of Waterloo, Fall 2009.
- Artificial Intelligence, University of Waterloo, Spring 2008, Spring 2007.
- System Analysis and Design, University of Tehran, Spring 2004, Spring 2002.
- Computer Networks, University of Tehran, Fall 2011, Fall 2003.
- Software Engineering, University of Tehran, Fall 2002.
Teaching
- UML and RUP, Iran Book House, aka IRAN ISBN, summer and fall 2004.
Guest Lecturer
- Software Architecture and Design, University of Waterloo, spring 2011, spring 2010.
Under-Graduate Thesis Co-supervised
- Mohammad Zarafshan, "Software Testing and Debugging Patterns," Faculty of ECE, University of Tehran, 2006 (Supervisor: Prof. Caro Lucas).
- Siavash Mirarab, "Software Design Transformation Using Design Patterns," Faculty of ECE, University of Tehran, 2006 (Supervisor: Prof. Caro Lucas).
- Sepand Ansari, "Automated Software Design Evolution," Faculty of ECE, University of Tehran, 2006 (Supervisor: Prof. Caro Lucas).
- Arman Nowrozian, "Software Design Metric Evaluation," Faculty of ECE, University of Tehran (Supervisor: Dr. Ramtin Khosravi).
- Saman Sattari, "Semantic Evaluation of Design Transformations using ACE and ADE," Faculty of ECE, University of Tehran (Supervisor: Dr. Ramtin Khosravi).