Work Experience

Internships and teaching positions:

I’ve been incredibly lucky to intern at some great companies as well as course assist for some of the core computer science courses at Stanford.

Internships

Intuit - Summer 2018

This most recent summer I interned with Intuit’s cybersecurity team in San Diego. I learned a great deal about offensive security, how a large company works to secure its products, and good practices in writing safe code, among other things.

My project involved researching the use of property graphs in static code analysis. While most static code analyzers only detect vulnerabilities based on code syntax, property graphs allow for the modeling of control and data flow as well, which enables a security auditer to ask questions like “Are there any calls to memcpy where the len argument is attacker controlled (data flow) and isn’t properly sanitized (control flow)?”

To be a little more specific, I used Joern, which is an implementation of this property-graph-for-vulnerability-finding idea written by Dr. Fabian Yamaguchi. Joern parses C/C++ codebases and outputs a Neo4j graph database to run Gremlin/Cypher queries on. Using Joern, I was able to discover 5 new buffer overflow vulnerabilities in the OpenJPEG library that I reported on GitHub. These aren’t complicated or Spectre/Meltdown-level vulns, but finding them using this new technology was a great proof of concept for my team to move forward with my project after I left.

Oracle - Summer 2017

This was my first “big tech company” experience, and I really enjoyed it! I worked with the NLP group on the Intelligent Bots Cloud Service (IBCS), which is Oracle’s venture into the chatbot space for enterprises. My teammates were brilliant, and I was exposed to some of the most pressing problems in language processing, such as entity extraction, intent recognition, and multiword expression identification. Some of my contributions to the Bots platform included:

Oracle Bots is a product that continues to grow and improve, so make sure to keep up with its progress!

NetQuarry - Summer 2016

NetQuarry helps enterprises build and maintain web applications to run their businesses. As a software development intern, I got my hands wet in multiple areas of web development, including

Working at a smaller company, I really felt like I was contributing important pieces to the product we were working on. I learned a lot about working on a team, getting feedback on ideas, and working at a fast pace to meet customer deadlines!

Cal State Fullerton Computer Science Department - Summer 2014

This was my first experience programming “in the real world”. I worked in Cal State Fullerton’s computer science department under the supervision of Dr. Yun Tian, whose research interests include distributed computing and cloud security. At the time, Dr. Tian was interested in geospatial databases, so my role involved finding geospatial datasets (such as that of Yelp’s dataset challenge), creating MySQL database schemas, and writing scripts to import the datasets into MySQL for further analysis.


Teaching Experience

CS 106A - Programming Methodology (Winter 2018)

Many of those who are familiar with Stanford’s computer science department have at least heard of the section leading program. In a nutshell, section leaders are undergraduates who serve as teaching assistants for Stanford’s introductory computer science courses (any class prefixed by CS106). For those who are curious, you can find out more at this link!

In particular, CS 106A is the very first computer science class for many Stanford students. Taught in Java, it details the basics of programming syntax and organization, data types and structures, and object oriented programming. One of our main responsibilities as section leaders is to teach students good programming practices, including decomposition, clear commenting and variable names, and iterative testing. Despite being an introductory course, I found myself learning a lot as I section led this course, and I strongly urge any undergraduates to get involved in the section leading program ASAP!

CS 106B - Programming Abstractions (Fall 2018)

To be completed this coming fall!

CS 110 - Principles of Computer Systems (Fall 2017, Spring 2018)

CS 110 doesn’t fall under the umbrella of CS 106, so I wasn’t technically a section leader when I TA’d this class. That being said, a lot of my responsibilities paralleled those of being a section leader: I held weekly office hours, ran a section every Friday to go over practice problems or dive deeper into concepts, and graded exams and assignments. The main difference is that there are no interactive grading sessions (for more on those see here) after the 106 series.

Despite the similar responsibilities, TAing a higher level class feels a lot different than section leading, but it’s still a lot of fun! The concepts in 110 are incredibly important (filesystems, multiprocessing/threading, and networking to name a few), and I enjoy teaching and motivating these ideas for students to learn.