UBC CS vs. CPEN: The Engineering Student's Identity Crisis
🤖 The Identity Crisis Begins
Here's the conversation I had with myself circa 2023:
Me: scrolling through Reddit at 2 AM "Should I do CS or CPEN at UBC?"
Every single source: "CS is software. CPEN is hardware. Pick based on that."
Also every single source: 12-year-old forum posts, questionable YouTube advice, that one uncle who 'works in tech'
Fast forward to 2026, and I'm a CPEN student whose end goal is Machine Learning — about as "software" as it gets. So what happened? And more importantly, what does this mean for you trying to decide right now?
🎯 My Journey: The Accidental Engineer
Let me be real with you: I had no idea what I was doing. I wrote my first line of code in my senior year of high school:
#include <stdio.h>
int main(void) {
printf("Hello, World!");
return 0;
}
That was it. No algorithms, no data structures, no clue. Your classic Hello, World! program that every programmer in the world has coded at least once. Had I had more experience with coding and programming in general, perhaps I would have made a different choice but my little experience back then caused me to doubt I would have a career in coding 10, 15 years later. But I liked math, did decently in physics, and everyone said engineering was the "practical" choice. So I chose the Applied Science route.
The beauty of UBC Engineering is that first year is general. You get to sample different fields. I considered mechanical (until the APSC 101 claw project1), civil (until my parents mentioned "field work in the rain"), and several others.
The infamous APSC 101 mechanical claw. Shout out to my group mates who actually knew what they were doing. 🙏
CPEN wasn't even in my top three until APSC 160 — UBC's intro to coding for engineers. Something clicked when I started writing more programs, and eventually my own tic-tac-toe game. It was nothing fancy; no custom GUI, just the user, the compiler, and the command line interface. But that was the moment: seeing something you coded with nothing but your fingers and keyboard come to life made me realize that maybe this coding thing wasn't so bad after all.
💼 The Big Lie: "Hardware" vs "Software" Jobs
Here's where things get interesting. I started my first co-op job search this Winter term. Over the course of my brief two weeks and counting job search, I've been browsing the Applied Science Co-op portal, and noticed something funny:
Think about it: how many hardware companies are hiring 20-year-olds to design CPUs? Versus how many companies need software developers? The math isn't complicated.
The truth: Most CPEN graduates end up in software anyway. The degree doesn't lock you into hardware labs — it just gives you a different toolkit.
🧠 The Real Difference: How You Learn to Think
Forget "software vs hardware." The real distinction is in the mindset each program cultivates:
💻 CS: The Theorist
- Focus: Algorithms, abstraction, computational theory
- Question: "Does this solution work in theory?"
- Vibe: Whiteboard algorithms, big-O notation, occasional existential crisis over NP-complete problems
🔧 CPEN: The Pragmatist
- Focus: Systems, implementation, real-world constraints
- Question: "Does this actually run on real hardware?"
- Vibe: Debugging memory leaks at 2 AM, wrestling with System Verilog, that special kind of pain only CPEN 211 graduates understand
| Feature | Computer Science (BSc) | Computer Engineering (BASc) |
|---|---|---|
| Focus | Algorithms & Theory | Systems & Implementation |
| The Extra | More electives, flexibility | The Iron Ring 💍 + P.Eng status |
| The Pain | Theory-heavy exams | CPEN 211 (iykyk) |
🚀 The Verdict: Launchpad, Not a Prison
Here's what I wish someone had told me:
- APSC 101/160: First-year engineering (design + intro to C)
- CPEN 211: Digital Systems — the legendary rite of passage all CPEN students eventually have to face
- System Verilog/RISC-V: Hardware languages you'll learn (and maybe curse)
- Co-op: UBC's work program; basically your way of getting internships and work experience.