UC San Diego · Student · 2024

BS Computer Engineering

UC San Diego

Role

Student

Timeline

Sep 2020 - Jun 2024

Location

San Diego, CA

Stack

CC++PythonAssemblySystemVerilog +3

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.