Teaching Philosophy

Over the past 15 years, I have witnessed the expanse of Computer Science as a discipline, from its mathematical foundations to computer architecture to software development. Increasingly, Computer Science has also become a foundation for many other concentrations–a trend I have experienced at the University of Virginia while working with humanities scholars turning toward Computer Science techniques, such as social network analysis, text mining, and machine learning to aid their research efforts. By connecting with and engaging students from diverse backgrounds who have an interest in Computer Science in particular, or its application to another field more generally, I believe we can foster a more well-rounded computing society. Therefore, my goals in student learning are to invest, extend, and engage: I am committed to investing in and mentoring my students of all backgrounds so that they will invest in learning, extend their knowledge, and engage this new knowledge by applying to their interests and passions.

In order to invest in students, I believe that the best way to fully engage them is to consider the learning process as a mentorship, both inside and outside the classroom. In the classroom, this entails getting to know the students by name, taking the time to thoughtfully answer questions during class, and working their interests into the lecture material. At the beginning of each semester, I will have my students fill out an information form, including their name, majors, and hobbies, so that I can make an individual connection in the classroom and employ relevant examples tailored to their interests. Outside of the classroom, through office hours and meetings, I will build a rapport with students, so they feel comfortable talking about larger life questions as well as the assignments. This promotes a more holistic approach to learning and a fostering of intellectual curiosities in the field.

As a teaching assistant of UVA’s Software Development Methods course (CS2110), I regularly met with students one-on-one in office hours. One student consistently sticks out in my mind; she came to me for help uncovering a bug in her homework assignment, which turned out to be a memory management issue in Java. During that meeting, I had the opportunity to go beyond the course material to explain how pointers work and how Java extracts that level of detail, circling around to the problem she was facing. Afterwards, as she was deciding which major to choose, she would ask me about life as a graduate student and possibilities in the field of Computer Science. I discussed how broad and wide-reaching the field has become, and learned that she declared her major in CS that year. I was very proud to see her return years later–as a PhD-student in CS–to speak to the current undergraduates. It is that type of interaction which fuels my passion for teaching: seeing students grow and succeed.

A core part of student growth, and my second goal for student learning, is extending their current knowledge of the subject. I want my students to leave any course with a core knowledge about the topics covered that can be built upon for further work in CS or that gives them useful and relevant tools to apply to their primary or future fields of study. In a typical Software Development course, this includes the theoretical background, implementation skills, and use of common data structures; programming paradigms such as OOP; and the software lifecycle with specification writing and testing. In addition, it also includes practical life skills such as teamwork and time management through semester-long projects intended to mimic real-world development teams.

To assess acquisition of this knowledge, I believe that the best method is through the use of a constant feedback loop. In the classroom, this can take the form of a short recap of the material covered that day followed by either a few moments for questions in small- to moderate-sized classes or a brief, potentially anonymous, interactive poll in larger-sized classes. By gaining quick real-time feedback, I can tailor both the next lecture and upcoming homework assignments to the needs of the students. While this more immediate feedback is helpful in determining the aggregate progress of the course, regular homeworks and tests are still used to measure individual student progress.

Finally, my major goal in student learning is to encourage students to engage their passions within the field. Since I believe that students themselves play the largest role in their learning process, their interests and backgrounds should shape the direction of course examples. To achieve this goal, I intentionally include flexibility in the projects and assignments, encouraging students to incorporate their own interests, disciplines, and concentration choice into their work. This process celebrates the diversity of the students in the classroom by connecting the material directly to their backgrounds and interests. For example, when designing my Web Development course at ECPI College of Technology, instead of following the course’s traditional “example company”-based material, I encouraged students to choose their own topics. Throughout the course, grounded in their choice, they learned HTML and best practices in web design, ultimately building a larger class project website. One veteran, engrossed in his project because of his topic (guitars), put in extra effort on his website and ultimately incorporated more than the project itself required. Students best learn when they are engaging their passions at the same time they are conquering a new task.

By engaging students from a wide variety of backgrounds, connecting their passions to the course material, and mentoring them beyond the classroom, I believe students bring more of themselves to the subject and through that process succeed, not only as Computer Scientists, but also as Engineers, Mathematicians, and Digital Humanists. They will experience the vastness of the Computer Science field as well as its ever-increasing application domains, embodying the philosophy that “computer science is no more about computers than astronomy is about telescopes.”