Lisa Yan

About Me

Lisa Yan 

I am a PhD candidate at Stanford University in the Department of Electrical Engineering. I started in Autumn 2013, and my current research interests are in applying machine learning and data analysis techniques to student programming assignments in large computer science courses. My previous resarch was in software-defined networking and performance of network switches.

I organized the Stanford Networking Seminar for the academic years of 2014-2015 and 2015-2016. I am currently part of the Stanford Lytics Lab.

Advisor: Prof. Nick McKeown.

Email: yanlisa at stanford dot edu

Areas of Interest

Student programming assignments in large classrooms: Making the teacher's life easier

As undergraduate computer science classes grow larger, the teaching load also increases. Teachers spend more time giving feedback, an essential component of practical education – the process of grading student assignments to quantify proficiency and identify problems or issues that each student struggles with. However, one of the advantagse of having many students is being able to identify trends and anomalies between different students, particularly in their approach to programming assignments. My current research focuses on programming Breakout, a graphics-based game assignment in CS 106A, the introductory class at Stanford. By looking at intermediate code snapshots of how students complete the assignment, we can identify the resources that students use – lecture code, peer code, online code, and so on.

Teaching computer networking courses

A career in networking, like many other fields in computer systems, requires creativity and tenacity. It is necessary to develop new curricula for undergraduates and graduates so that they can excel in these traits and hit the ground running to tackle cutting-edge networking problems. I am involved in assessing the value of Stanford's current B.S and M.S level courses; the first course in the system is a flipped classroom, designed to maximize student networking intuition, expand student knowledge, and hone programming and debugging skills. The second course is designed around research, and the necessary critical mindset one must take towards existing work.

P4: A high-level language for programming protocol-independent packet processors

P4 is a high-level language for configuring network switches and routers, with the overarching goal of improving current Software-Defined Networking (SDN) in three ways: (1) Reconfigurability in the way that switches process packets after deployment; (2) Protocol independence, allowing switches to be designed as a blank slate with no specific network protocol support; and (3) Target independence: packet-processing functionality that is completely independent of the underlying switch hardware specifics. I was involved in the compiler necessary to translate P4 into a flexible, reconfigurable hardware switch. Visit for open source P4 specification, a compiler, and other tool chains.