Teaching Experience

University of Waterloo, Ontario (2007–2013)

Guest Lecturer (9 lectures)
CoursesData and Knowledge Modeling and Analysis, Dimensionality Reduction, Classification, and Computational Statistics

  • Independently instructed nine guest lectures in undergraduate and graduate courses
  • Communicated complex ideas to students through interactive instruction, examples and illustrations
Teaching Assistant – Graduate (1 term)
Course: Data and Knowledge Modeling and Analysis

  • Introduced and designed a course project on Kaggle (a competition platform) in which students competed on solving classification and clustering problems.
  • Evaluated and discussed a variety of research-oriented course projects 
Teaching Assistant – Undergraduate (2 terms)
Courses: Data Structures and Algorithms, Cooperative and Adaptive Algorithms

  • Independently instructed weekly tutorials in a classroom setting
  • Contributed significantly to the preparation of problem sets and their solutions for the Cooperative and Adaptive Algorithms course, later adopted by the course instructor
  • Graded assignments and exams to evaluate students’ understanding of the course materials 
  • Assisted students by providing face-to-face office hours and answering questions via email

Cairo University, Egypt (2003–2007)

Teaching Assistant (6 terms)
Courses: Software Engineering (3 terms), Data Structures and Algorithms, Pattern Recognition, Computer Architecture

  • Independently instructed weekly tutorials in a classroom setting
  • Designed many problem sets and their solutions
  • Designed several materials for the Software Engineering course project, later adopted by the course instructor
  • Developed a complete syllabus for teaching the Unified Modeling Language (UML) in the Software Engineering course, which included the design of all tutorial and laboratory sessions
  • Mentored and guided more than one hundred students in their course projects 
  • Developed marking schemes to evaluate students’ understanding of the course materials and graded several assignments, project reports, and exams
Laboratory Instructor (6 terms)

  • Independently instructed weekly laboratory sessions for Data Structures and Algorithms, Software Engineering, Computer Graphics, Operating Systems, Microprocessor Systems and Computer Architecture