Teaching Statement Vivek K. Pallipuram December 2014 Teaching Missions – Within my goal of becoming a successful university professor, I have two primary teaching missions. The first mission is in the classroom where my ambition is to provide quality education to undergraduate and graduate students, thereby preparing them to tackle challenging real-world problems. The second mission is in the research laboratory where my objective is to lead a group of dedicated students to perform cutting-edge research and generate new knowledge for the advancement of our society. These missions have been motivated by my six years of ingratiating experience in teaching and mentoring; my teaching methodologies are geared towards fulfilling these missions. Teaching Experience – As a graduate teaching assistant in the Electrical and Computer Engineering (ECE) department at Clemson University, I had the privilege of teaching the following two undergraduate courses for several semesters: 1) assembly language programming in the position of Instructor and 2) digital logic design in the capacity of Guest Lecturer. These opportunities were instrumental in sharpening my teaching skills and methods, which I continually refine. In my lectures, I always emphasized on building a strong basic foundation by acquiring an impeccable understanding of each newly encountered principle. To this end, my teachings often included interactive animation slides and visualization. I firmly believe that students can truly imbibe theoretical concepts by seeing them in action. For instance, to learn the concept of stacks and subroutines in the undergraduate programming class, my students and I would enact the processor using an interactive slide. Each one of us would take turn to execute a program instruction and watch on the slide how stacks, registers, and variables are modified. This role-playing not only enabled students to implement complex subroutines, but also helped them to understand adverse programming situations such as stack overflow and out-of-bound memory accesses. Similarly, in my digital logic design lectures, I urged my students to visualize the modular components in their Verilog/VHDL 1 codes and think how they work in parallel inside FPGAs 2 . All of my major theoretical lectures were supplemented immediately by challenging, yet interesting programming assignments. As an example, I gave students a quick sort assembly programming assignment with a video of several sorting algorithms being visualized and ‘audiblized’ to appreciate the algorithm complexity. In addition to teaching undergraduate classes, I had the tremendous opportunity of co-developing and teaching a graduate course in Spring 2013 called High-Performance Computing (HPC) with GPUs 3 . The class was taken by graduate students from ECE, computer science, and chemical engineering departments. To address such a diverse target audience, my principle of building strong basic foundation worked well. Using my aforementioned interactive visualization and animation techniques, I facilitated students to understand complex architectural concepts including memory coalescing, divergent warps, and shared memory. Consequently, students were able to effectively think in parallel, which is a highly coveted skill in the contemporary computing field. Similar to my undergraduate classes, the theoretical concepts were reinforced with programming assignments using CUDA 4 and OpenCL 5 , however at much higher complexity. Given the specialized nature of the course, these assignments asked students to make high-level inferences including application speed-up and identifying performance bottlenecks. The course concluded with a final project where students, in groups of two, successfully accelerated complex applications including edge-detection algorithms and shallow water wave equation simulation on multiple GPUs. At the end of the course, the students were confident to incorporate GPU-based solutions in their research. In addi1 Very High Speed Integrated Circuit Hardware Description Language Field Programmable Gate Arrays 3 Graphical Processing Units 4 Compute Unified Device Architecture 5 Open Computing Language 2 1 Teaching Statement Vivek K. Pallipuram December 2014 tion to classroom teaching, I continually took feedback from student performance and kept myself approachable via office hours and e-mails for discussions. I seek to apply the above methods while co-teaching the Operating Systems course in the next semester. Mentoring Experience – I firmly believe that effective teaching is not only limited to classrooms, but it is also required in the research laboratory to shape students into impactful researchers. In my academic career thus far, I have had the opportunity to mentor several students. I cite examples of mentoring three graduate students: two during my stint as a Ph.D. student, and one during my post-doctoral research. I stimulated my students to think critically, intuitively, and creatively, encouraging them to produce quality theses and research papers. The mentoring experience gave me valuable lessons in student management; I learned how to effectively micro-manage, mesomanage, and macro-manage based on the student’s circumstances. For instance, to meet a paper deadline, I micro-managed one of my students by conducting frequent brainstorming sessions, albeit I made sure that these discussions were fruitful and not overwhelming. This effort led to a Cluster conference paper that was nominated for the best paper award. The meso-management of one of the students at Clemson required me to conduct weekly discussions and teach her several statistical concepts. The macro-management of another student from Clemson was a different experience altogether, as I guided his research remotely using video conferencing facilities. Both of these efforts with Clemson University students culminated as quality Master’s theses. Currently, I am guiding graduate and undergraduate research of students from both Clemson University and University of Delaware, and continually refining my mentoring skills. Owing to my fulfilling mentoring experience, I am confident in assuming the role of an academic leader and in guiding undergraduate, graduate, and post-doctoral researchers. Future Teaching and Mentoring – My teaching philosophy is built on three essential pillars namely, theory, practice, and experience. I want to apply my teaching philosophy to computer science and engineering (CSE) courses and equip students with all the tools necessary to succeed in academia and industry. I want to provide students a balanced software and hardware perspective, enabling them to generate highly efficient and portable engineering solutions. To achieve these goals, my broad teaching interests include, but are not limited to, computer systems architecture, logic design, and parallel computing. I am especially interested in teaching heterogeneous systems courses that align with my research interests. The specific courses include HPC with GPUs using CUDA/OpenCL/OpenACC 6 , Heterogeneous Computing with OpenCL, and Data-Intensive Computing. I strongly believe that these courses will be highly useful to both CSE and other computational science majors and enable them to meet their research and learning goals. Akin to classroom teaching, my goal is to maintain high mentoring standards in the research laboratory, encouraging students to think critically and intuitively to address complex real-world problems. In addition to shaping students into quality researchers, I envision training them to become skilled speakers and effective writers. To help broaden students’ research perspective, I aim at helping students to find lucrative internship opportunities in esteemed industrial organizations and national laboratories. My teaching and mentoring methods will always strive to adapt, evolve, and re-cast to yield highly trained, quality professionals that will make a mark in the society. 6 OpenACC. https://developer.nvidia.com/openacc 2