profile picture

David C

- Research Program Mentor

PhD candidate at University of California Berkeley (UC Berkeley)

Expertise

distributed systems, databases

Bio

Hey kids. Distributed systems are cool because 1. Even though it's called "systems", it's actually very theory-focused, so you think a lot about protocols & logic instead of dealing with annoying low-level implementations, and 2. You can see applications of it everywhere in real life! Delegating roles in a group project? Standing in line to order food? Messaging your friends? All distributed systems! I'm a 4th year PhD student researching at UC Berkeley. Outside of research, I love cooking, playing badminton, playing piano, and going to classical music performances. I highly recommend Beethoven's Op. 111.

Project ideas

Project ideas are meant to help inspire student thinking about their own project. Students are in the driver seat of their research and are free to use any or none of the ideas shared by their mentors.

Randomized probabilistic consensus

You just had a massive burger and died. The guards at heaven give you 1 task: find a unique HSN (heaven security number) for yourself. They'll check on everyone in an hour, and anyone who does not have a unique HSN isn't going to heaven. An hour isn't long enough to coordinate with everyone who's died to find a unique HSN, so you go for the next best thing: generating a random one. Turns out, this is very applicable to distributed systems: a bank, for example, needs to decide the order in which transactions happen, ideally without coordinating with all bank computers, which can take a long time. This is the classic problem of consensus: now the question is, can having transactions randomly self-assigning an order reduce the coordination required, which probabilistically guaranteeing the same thing?

Mario online

2 player games are not too hard to make on a single computer. But how do multiplayer online games work? What happens when both players' computers claim the characters are occupying the same block? What happens when 1 computer is always lagging behind the other?

Coding skills

Java, python, C++, C, OCaml, Golang, SQL

Languages I know

Mandarin, native; Russian, beginner

Teaching experience

Spring 2018: Object-Oriented Programming and Data Structures Fall 2018: Data Structures and Functional Programming Spring 2019: Operating Systems Fall 2019: Distributed Computing Principles Fall 2020: CalMentors Spring 2021: Be A Scientist Fall 2021: Introduction to Database Systems

Credentials

Work experience

Amazon Robotics (2019 - 2019)
Software Developer Intern
Microsoft research (2023 - 2023)
Research intern

Education

Cornell University
BS Bachelor of Science (2019)
Computer Science
University of California Berkeley (UC Berkeley)
PhD Doctor of Philosophy candidate
Distributed systems

Interested in working with expert mentors like David?

Apply now