Experience

I enjoy interacting with graduate and undergraduate students as a teaching assistant and as a mentor. I have held tutorials during my tenure at IBM for new hires. At IBM, I taught guest lectures on Memory Management and Distributed Systems. At Wisconsin, I was a teaching assistant during the first year of my graduate school. In Fall 2007, I held labs for Introduction to Programming (CS302) twice a week, co-designed assignments and graded exams. In Spring 2008, for an upper level undergraduate class, Introduction to Computer Architecture (CS552), I created notes for every class for the student's reference. Both classes required me to hold office hours, grade homework and answer questions over email regarding class projects and homeworks.

Teaching Principles

My experience as a student and as a teaching assistant has led me to believe that knowledge can be effectively imparted in the classroom by following these three pedagogical principles:
Interactive Learning through Examples: First, I strive to make the class interactive, by using real examples. For example, my lecture on memory management contained various small programs that helped the students better understand memory management in userspace and kernel. When teaching abstract concepts, I intend to use theoretical foundations to build the concepts. I believe that these examples and foundations will help the students to understand and retain these concepts.
Positive Classroom Environment: Second, I believe in creating a positive environment for learning. Positive environments enable students to express creativity when developing solutions and to comfortably ask questions when confused. As a teaching assistant for introduction to programming, I found that creating assignments that are fun (as opposed to cut and dry) is worth the extra effort. I was amazed by how many students started working on the assignments early and I was also surprised with the number of creative solutions that the students submitted.
Emphasizing Key Concepts: Finally, I believe in emphasizing the key concepts in handouts and assignments. I plan to take a long term view of the key takeaways from the class and ensure that students carry forward the concepts which they can apply to other classes and perhaps other areas.

Graduate Advising

I plan on advising students for research with the goal of creating independent thinkers and problem solvers adept at communicating their ideas. Since Fall 2012, I have been meeting a new graduate student bi-weekly while being available over email for any specific questions. My goal is to grow to student's abilities through weekly one-on one meetings. I plan on giving sufficient creative freedom and at the same time set clear and realistic goals. I also wish to help my students develop complimentary skills including communication and critical thinking by encouraging presentations and reading groups. I also plan on encouraging undergraduates to pursue short term research projects and gain research experience before graduate school.

Courses of Interest

I plan to teach Operating Systems and Distributed System Courses at the graduate and undergraduate level. I am also interested in teaching introductory courses such as Computer Organization. I also wish to explore new courses relevant to recent computing trends such as graduate course on cloud computing and I/O virtualization and undergraduate course on mobile programming. Finally, I am fascinated at the recent efforts of various faculty at different universities to use new technology to improve education by providing classes online. It will allow me to educate students outside the bounds of the university.
I look forward to this opportunity to mentor students, play a positive role in their academic development and guide them in being the next generation of computer scientists.