My first teaching assistant job was an Introduction to Computer Science class at the State University of New York at Albany, during the Sophomore year of my undergraduate studies. I was responsible for holding a recitation section, grading of written and programming homework assignments, and for helping with grading exams. When I became a graduate student at the University of Maryland, I was a teaching assistant first for an Introduction to Fortran Programming course, where I also held a recitation section and was responsible for grading homework assignments. This course was offered to non-majors, and provided unexpected challenges in presentation of class material to students with widely varying Computer Science and Mathematics backgrounds. Next, I was a grading teaching assistant for the undergraduate Operating Systems large project course, and was responsible only for grading the project. Most recently, I was a teaching assistant for a Computer Networks course under one of my Thesis committee members, Leana Golubchik. I was responsible for managing the large group project, grading homework, helping to create and grade exam questions, and occasionally preparing and presenting a lecture. I received a teaching award from the department for my work in this course.
I strive for student participation during class, which can be improved if the teacher is able to make the students feel comfortable in asking questions. I try very hard to help students to solve problems on their own rather than simply handing them answers. Care is needed to avoid leaving them hanging, and to recognize when a student genuinely needs more help. I believe striking this balance is key to being an effective teacher. My area of research and interests lies in between the traditional areas of Networking, Systems and Databases. I should be able to teach courses in these areas, as well as courses closer to my research in Distributed and Parallel systems, and Data-Intensive application runtime systems. I would also like to design and teach a class that focuses on Grid computing, and how it differs from existing Distributed and Parallel systems paradigms.
My style of teaching would vary based on the course being taught. In general, I believe undergraduate courses should contain both conceptual learning in addition to application of the concepts in the form of individual or group projects. Class projects should be significant in scope and highly relevant, so the students can learn skills useful to their eventual real world employment. Care is needed to do this within a reasonable amount of student time. One example that has worked well in my own past experience is to provide a skeleton project for the students to enhance and modify, which allows them to concentrate more on problem solving than general approach and organizational issues. Seminar courses that survey current work in my research area would, as expected, interest me for teaching. Here, I would assign reading of selected research papers, have student presentations based on the readings, and projects if needed. These classes would be fun, and hopefully enjoy lively discussions on research topics, and possibly help student find research areas that interest them. Overall, I would prefer to repeat teaching a class, which affords the time to refine content and presentation based on previous semesters, making it better for everyone involved.
Oftentimes, teaching at research institutions is thought of as a required duty, rather than being an enjoyable and productive use of time. I can honestly say I enjoy teaching undergraduate level courses, and anticipate at least this much enjoyment at the graduate level. A tenure track faculty position is unforgiving in its time constraints, but I believe it should be possible to perform world class research, while also enjoying the time spent teaching. I personally find teaching to be greatly rewarding, and approach it with enthusiasm.