UC San Diego · Student · 2024
BS Computer Engineering
Role
Student
Timeline
Sep 2020 - Jun 2024
Location
San Diego, CA
Stack
Overview
Computer Engineering at UCSD
I graduated with a Bachelor of Science in Computer Engineering from the University of California, San Diego. The program bridges hardware and software: you start at the transistor level and work up through digital logic, operating systems, and distributed computing.
UCSD's CE program is engineering-heavy. It is not a CS degree with extra physics. That foundation shaped how I approach every technical problem.
Challenge
Bridging Hardware and Software
Computer Engineering sits between two worlds. You need enough electrical engineering to design hardware and enough computer science to write software that runs on it. Most students lean one way. I wanted both.
The hard part was not any single class. It was connecting the layers. Understanding why a cache miss costs 100x more than a hit changes how you write code. Knowing how interrupts work changes how you think about concurrency.
Coursework
From Bare Metal to Machine Learning
I focused on the intersection of systems and intelligence. The coursework ranged from bare-metal programming to machine learning.
- Systems programming and computer architecture: memory management, caching, pipelining, and OS internals in C and assembly.
- Machine learning and statistical methods: supervised and unsupervised learning, neural networks, and probabilistic models in Python.
- Embedded systems and FPGA design: real-time constraints, hardware-software co-design, and custom digital logic in SystemVerilog.
- Data structures and algorithm design: time and space complexity, graph algorithms, and dynamic programming.
Projects
Custom Processors to Networked Apps
I built projects across every layer of the stack. Low-level C and assembly programs that manage memory by hand. FPGA designs in SystemVerilog that implement custom processors. Networked applications that handle concurrent connections.
The capstone projects forced end-to-end thinking. You cannot ignore hardware constraints when your software runs on an FPGA with limited block RAM, and you cannot ignore software complexity when your hardware needs a driver and a user interface.
Research
Products Over Papers
By junior year, I knew I wanted to build products, not publish papers. The courses that stuck with me were the ones where you ship something: a working processor on an FPGA, a networked chat application, a trained model that makes real predictions. I gravitated toward projects that combined multiple systems and worked end to end.
Activities
ACM, Powerlifting, Bodybuilding
I served as Project Manager for ACM at UCSD, coordinating engineering teams across multiple concurrent projects. The role was equal parts technical and organizational: scoping work, unblocking teams, and making sure projects shipped on schedule.
Outside of academics, I was an active member of TritonFlex (bodybuilding) and TritonBarbell (powerlifting).
Reflection
Systems Thinking as a Foundation
The most valuable thing UCSD gave me was systems thinking. Not any specific language or framework, but the ability to reason about how layers interact. When I debug a slow API, I think about database indexes, network latency, serialization costs, and memory allocation. That vertical awareness comes from spending four years moving between hardware and software.
The CE program also taught me to be comfortable with not knowing. Every new course started with unfamiliar territory. You learn to read documentation, build mental models quickly, and ask precise questions.