Ever since I began teaching as an undergraduate at UC Berkeley, teaching has been one of my main passions. My greatest strength and joy is to find ways to explain difficult material in an easily approachable manner such that anybody can learn it. This philosophy extends to all aspects of my life: teaching, writing, coding, etc.
The following are anonymized teaching evaluations:
- CS 33: Introduction to Computer Organization. UCLA. Spring 2015.
- PIC 10A: Introduction to Programming. UCLA. Winter 2016, Spring 2016
I have TA'd several undergraduate Computer Science courses at the University of California, Berkeley:
- CS 3L: Introduction to Symbolic Programming
- Instructor: Ian Tullis
- Semester: Summer 2011
- Course Topics: Basic programming principles, control flow, higher-order functions, functional programming, recursion, list programming, tree recursion, vectors, complexity.
- Language: Scheme.
- CS 61A: Structure and Interpretation of Computer Programs
- Instructors: Brian Harvey, Professor John DeNero, Jon Kotker and Tom Magrino.
- Semesters: Fall 2010, Spring 2011, Fall 2011, Summer 2012
- Course Topics: Introduction to computer science. Functional programming, recursion, abstract data types, object-oriented programming, programming paradigms, orders of growth, interpreters, streams, declarative programming, parallelism.
- Languages: Scheme, Python
- CS 61BL: Data Structures and Algorithms
- Instructor: Professor Colleen Lewis
- Semester: Summer 2010
- Course Topics: Object-oriented programming, abstract classes/interfaces, data structures (linked lists, arrays, stacks, queues, trees, hash tables, heaps, priority queues, graphs), generic programming, Java libraries, asymptotics, graph traversal algorithms, shortest path algorithms, sorting.
- Language: Java.
During my Master's program, I also TA'd for undergraduate computer science courses at the University of California, Los Angeles.
- CS 33: Computer Organization
- Instructor: Professor Paul Eggert
- Semester: Spring 2015
- Course Topics: architecture, assembly language, and operating system fundamentals. Number systems, machine language, and assembly language. Procedure calls, stacks, interrupts, and traps. Assemblers, linkers, and loaders. Operating systems concepts: processes and process management, input/output (I/O) programming, memory management, file systems. Multithreading.
- Languages: C, x86_64.
- PIC 10A: Introduction to Programming
- Instructor: Professor Michael Lindstrom
- Semesters: Winter 2016, Spring 2016
- Course Topics: Procedural problem solving; program design and development; basic data types; control structures; functions; arrays and pointers; introduction to classes. Duties included: holding weekly discussion sections/office hours, preparing course material, and grading exams.
- Language: C++.