At the undergraduate level, I would like to teach courses in programming languages, such as Principles of Programming Languages, Type Systems for Programming and Compiler Construction. I would also like to teach software engineering courses such as Software Engineering, Software Design, Software Maintenance and Software Process.
At the graduate level, I would like to teach courses on advanced concepts in programming languages, including Advanced Type System, Generic Programming and Mechanizing Metatheory. For the graduate level courses in software engineering, I would like to teach Product Line Engineering, Software Evolution, Software Testing and Formal methods. Additionally, I would like to lead graduate seminar courses both for the foundational papers and for the current research in a topic.
