You are here: Home / Teaching / Statement of Teaching Philosophy

Statement of Teaching Philosophy


Last Updated: October 2009

As a teacher at a university, I have a unique chance to influence the directions of my students at a formative time in their lives. I see my teaching role as a mentor to prepare them for what lies beyond their graduation date, be it a career in industry or further education in graduate school. I enjoy helping students appreciate how the material learned in the classroom can help solve larger real-world problems, and seeing the excitement that such knowledge generates.

During my time at Rice University, I was fortunate to have the opportunity to co-develop a new course in Network Systems Architecture with my advisor, Professor Scott Rixner. This course focused on the design and implementation of network systems such as routers and servers from both a hardware and software perspective. Targeted at senior undergraduates or first-year graduate students, the course was project-based and included a substantial design component. Groups of students used the NetFPGA prototyping platform to build and test a gigabit Ethernet switch and IP router. They were responsible for programming both the router FPGA hardware (in Verilog) and the x86 control processor (in C). In the first year, I team taught the course with Professor Rixner, while in the second year, I was the instructor of record while he was on sabbatical. My involvement in developing and teaching this course provided an opportunity to put several key elements of my teaching philosophy into practice. These elements include:

Problem-Based Learning - Students should be assigned “authentic learning” projects with open-ended descriptions representative of the work they will be likely to encounter after graduation. This helps students hone their problem-solving (and problem-defining) skills and move their knowledge from the classroom to the lab while receiving feedback in a supportive and familiar environment. The projects assigned in the the network systems architecture course (e.g., “Construct an IP router”) followed this philosophy. From the design description, students extracted specific problems and devised potential solutions and implementation timelines. During group project meetings, we spent a significant amount of time discussing the possible approaches that might be used to solve various design problems in order to ensure that students were comfortable evaluating the strengths and weaknesses of each approach.

Interdisciplinary Learning - Graduates should be comfortable working in interdisciplinary groups comprising a diversity of skill sets. Effective teamwork is essential because no one team member can accomplish the project working alone. The network systems architecture class was organized around 4-person groups, typically with students from multiple departments (e.g., Computer Science and Electrical Engineering). Each group had the desired mix of software and hardware skills for project completion, provided that they effectively communicated and worked together. Such projects should be pursued whenever departmental and university dynamics allow.

Peer Learning - In addition to instructor-driven learning, students can collaboratively learn from each other both inside and outside of the classroom. In the network systems architecture course, sharing ideas (but not implementation code) was encouraged between groups. Peer learning was formally encouraged through the use of whole-class project discussions to share ideas, and occurred informally as well.


For more information: To learn more about the Network Systems Architecture course at Rice University, please visit the course website at