Vivek K. Pallipuram - ECE/CIS

advertisement
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
Download