Academic/Teaching Experience

University of Waterloo, School of Computer Science
Lecture (September 2006  December 2006)
CS 350 (Operating Systems, 3rdyear course) – Threads and synchronization; deadlocks and starvation; CPU scheduling; memory management and paging; device I/O and file systems; interprocess communication; security. The course is based on Nachos, an educational operating system sitting next to a simulated MIPS machine.

University of Waterloo, School of Computer Science
Lecture (January 2006  April 2006)
CS 241 (Foundations of Sequential Programs, 1st/2ndyear course) – MIPS assembler; regular expressions, finite automata, and scanning; contextfree grammars, LL(1) and LR(1) parsing; semantic analysis and code generation; linking and loading; introduction to C and C++.

University of Waterloo, School of Computer Science
Marking and tutorials (May 2005  August 2005)
CS 448 (Introduction to Database Management, 4thyear course) – Entity relationship model; relational algebra; SQL and embedded SQL; query processing and optimization; transaction management.

University of Waterloo, School of Computer Science
Marking and tutorials (September 2004  April 2005, September 2005  December 2005)
CS 360 (Introduction to the Theory of Computation, 3rdyear course) – Languages and automata: Regular, contextfree, and recursive languages; Chomsky hierarchy; different kinds of automata and their relationships; closure properties.

University of Waterloo, School of Computer Science
Marking (May 2004  August 2004)
CS 134 (Principles of Computer Science, 1styear course) – Basic data structures; program design; simple correctness proofs; programming in Java.

University of Erlangen, Institute of Computer Science
Marking and weekly tutorials (October 2003  February 2004)
Exercises to Introduction to Algorithms I (Algorithmik I, Prof. Dr. M. Philippsen, 1styear course) – Introduction to the Java programming language, objectoriented programming, UML, formal specification of computer programs, correctness proofs, basic algorithms.

University of Erlangen, Institute of Computer Science
Weekly tutorials (October 2002  February 2003)
Exercises to Introduction to Theoretical Computer Science II (Einführung in die Theoretische Informatik II, Prof. Dr. K. Leeb, 2ndyear couse) – Formal logic, groups, rings, finite fields.

University of Erlangen, Institute of Computer Science
Weekly tutorials (May 2002  July 2002, April 2003  July 2003)
Exercises to Introduction to Theoretical Computer Science III (Einführung in die Theoretische Informatik III, Prof. Dr. V. Strehl, 2ndyear course) – Introduction to complexity theory, analysis of algorithms (in particular of those of the divide&conquer type), sorting and searching, lower bounds, complexity types, NPcompleteness.

University of Erlangen, Institute of Applied Mathematics
Marking and weekly tutorials (October 2001  July 2002)
Exercises to Mathematics for Computer Science students I, II (Mathematik für Informatiker I, II, Prof. Dr. W. Borchers, 1styear course) – Linear algebra, calculus, basic differential equations.