For as long as I remember, I have derived immense satisfaction in sharing knowledge with others. Starting with juniors at school and my younger cousins, I have helped several students with subjects ranging from high-school physics to computer programming. I received positive feedback from most of them who felt I explained complicated concepts in a simple manner. As I pondered about the reasons for such feedback, I learned two important facts. Firstly, a teacher must possess the ability to gauge the level of understanding of the student and tailor their teaching methods appropriately. Secondly, an effective approach to explaining a new concept is to relate it to more familiar concepts and real-world experiences.

During my undergraduate years as a computer science student, I qualified for an intensive, year long course in C++. In what became one of the most extraordinary learning experiences I have had, I understood how to learn a new language. Our teacher’s approach to teaching was unlike any that I had seen before. Rather than introducing a concept and then explaining the details with examples and actual implementation, he always started with a goal, achieved it incrementally - at all times with input and questions from students - and finally named the concept behind the implementation. This process of working from a problem towards a solution in steps helped students understand the process of designing software and, at the same time, easily grasp the underlying programming concepts. I also served as a mentor for my juniors in the same course. While I already had an inclination towards a career in teaching and research, this experience crystallized my career goals.

The most valuable lesson that I learned from this experience is the importance of grasping the fundamentals of any subject and being able to apply these fundamentals elsewhere. One of my primary teaching goals is to ensure that students, especially at the undergraduate level, appreciate this fact and are motivated to achieve it. Furthermore, it is my goal to encourage students to apply these fundamentals systematically in solving bigger (potentially novel) problems in the field.

While pursuing a doctoral degree at North Carolina State University, I had several opportunities to deliver guest lectures in courses taught by faculty members in the systems-related area. This provided me with an opportunity to put my teaching skills and ideas into practice in a formal classroom setting. I have lectured in graduate level courses such as operating systems, real-time systems and parallel systems. In these classes, my responsibilities included teaching the class material and answering any questions the students had during and after the lecture. I also had an opportunity to interact with students in an undergraduate operating systems class where I was responsible for designing and conducting an in-class exercise.

I strived to make all my lectures interesting and easy to comprehend by incorporating real-world examples. I also made my lectures as interactive as possible by posing a question to the students and helping them along in the process of obtaining a correct answer rather than just explaining the whole concept upfront. I have received positive feedback from students regarding my teaching ability and methods. Each of these teaching experiences has been invaluable to me in developing and honing my skills as a teacher.

It is my firm belief that the objective of teaching is not just to impart knowledge, but to share it and enhance it. Each person has a different perspective and possibly fresh ideas on the same subject and it is up to a teacher to encourage students to think beyond the lecture material and let such ideas surface. Being a researcher in addition to a teacher, I consider teaching a means to use intellectual discussion as a stimulant for future research opportunities with students.