Teaching Philosophy

I teach students to develop a deep understanding of the material, and a true appreciation of what they are learning. I believe in pursuing these as the primary goal, and I discourage any learning based on simple "pattern matching".

After achieving a deep understanding, it's simply practice, practice, practice. With the solid theory under your belt, repeated exposure to different problems from different angles allows you to build intuition and hone in on creative problem-solving skills.

Course Materials

Stanford courses

CS 109: Probability for Computer Scientists


UC Berkeley courses

CS 61A: The Structure and Interpretation of Computer Programs

CS 70: Discrete Mathematics and Probability Theory


SAT/AP courses

SAT/AP Chemistry

SAT/AP Biology

Private Tutoring

I offer private tutoring over the school year, as well as summers. Click here for more information.