Email: [email protected] Tel: 925-699-3883
Computer science graduate from the University of California, Berkeley. Interests include web development, programming languages, and machine learning. In my free time I enjoy spending time outdoors and playing jazz piano.
Source control management system administration.
- Modernized source control management system from Mercurial to Git and Atlassian Bitbucket/JIRA.
- Worked on new software development workflow, e.g. automating bug reporting and tracking services.
Front and back end financial services.
- Developed iOS app for GoWallet, a service for managing financial payments products, e.g. gift cards.
- Developed back end payment processing system for PayPower, a reloadable Visa prepaid card.
CS 61A - Structure and Interpretation of Computer Programs
- Twitter Trends - geographic visualization of Twitter data across the USA (Python)
- Ants vs. SomeBees - tower defense game inspired by Plants vs. Zombies (Python)
- Logo Interpreter - evaluator and parser for the Logo language (Python)
CS 61B - Data Structures
- Sharks and Fish - simulation of an ocean inspired by Conway's Game of Life (Java)
- Network (The Game) - designed agent that plays the game Network against a human or another agent using minimax search with alpha-beta pruning (Java)
CS 61C - Machine Structures
- LIFC Compiler - compiler from homebrew language of LIFC to MIPS assembly (lexing, parsing, static analysis, code generation) (C)
- Eigenvector Finding - simple eigenvector finding algorithm optimized with Intel SSE and OpenMP (C)
- Processor Design - 2-stage pipelined processor for the Ida 2 assembly language (Logisim)
CS 161 - Computer Security
- Transport Layer Security (TLS) Handshake Protocol - simple implementation similar to mbed TLS (C)
CS 162 - Operating Systems and Systems Programming
- Threads - alarm clock, priority scheduler, and multilevel feedback queue scheduler (4.4BSD scheduler) implemented using Pintos (simple operating system framework) (C)
- User Programs - argument passing, memory access, and system calls (to support user programs) implemented using Pintos (C)
- Key-Value Store - distributed key-value store database with two-phase commit (C)
CS 164 - Programming Languages and Compilers
- Course Project - self-titled simple language called CS164 implemented using Node.js (JavaScript)
- Interpreter - support for integer arithmetic, closures, and desugaring
- Objects and Layout - layout engine and support for tables and objects with prototype-based inheritance
- Bytecode and Coroutines - compiler from ASTs to bytecode, bytecode interpreter, and support for coroutines and tail call optimization
- Grammars - grammar for parsing the CS164 language
- Arbor - small domain-specific language designed to visualize abstract syntax trees using the D3 JavaScript library; developed in two weeks by my partner and myself (JavaScript)
CS 170 - Efficient Algorithms and Intractable Problems
- NP-Hard Approximation - approximation algorithm for maximum acyclic subgraph problem proven to yield a better than 1/2-approximation on a majority of instances by reduction to a constraint satisfaction problem (Python)
CS 186 - Database Systems
- Course Project - database system implementation using Amazon SimpleDB (Java)
- Query Plans and Joins - support for chunk-nested loop join and symmetric hash join
- Query Optimizer - dynamic programming and greedy join algorithms
- Recovery - support for log-based rollback and crash recovery (to enforce atomicity and durability)
- UDF Caching in Spark - disk hash-partitioning, in-memory UDF caching, and hash-partitioned UDF caching implemented using Apache Spark (Scala)
CS 188 - Artificial Intelligence
- Course Project - designed agents for the classic Pacman game using a variety of strategies (Python)
- Search - support for depth-first search, breadth-first search, uniform-cost search, and A * search
- Multi-Agent Search - reflex agent, minimax agent with alpha-beta pruning, and expectimax agent
- Reinforcement Learning - support for value iteration, Q-learning, and approximate Q-learning
- Bayes' Nets - inference algorithms for Bayes' Nets (variable elimination and likelihood weighting sampling)
- Ghostbusters - support for locating and eating ghosts using hidden Markov models and particle filtering
- Classification - designed a perceptron classifier, a large-margin (MIRA) classifier, and a perceptron classifier for behavioral cloning (Python)
AngularJS, D3, Express, Node.js, React, Django, Flask
C, C++, CoffeeScript, Objective-C, Java, JavaScript, Kotlin, Python, Ruby, Scala, Swift
Arch, Debian, Fedora, OS X, Windows
Available upon request.