🤖 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'

💡 The Problem: This advice is like telling someone to pick a major based on whether they prefer typing or clicking a mouse. It's technically not wrong, but it misses everything that actually matters.

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.

⚠️ Reality Check: Doing well in high school STEM has exactly zero correlation with surviving university engineering. It's like being good at Monopoly and thinking you can run a real estate empire.

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.

APSC 101 Mechanical Claw Project

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:

💰 The Secret No One Tells You: Most "Computer Engineering" jobs on the co-op portal are... software roles. Backend, frontend, full-stack, ML — the same positions CS students are fighting for. Hell, even quality assurance and software testing roles that CS and CPEN students discriminate against are getting competitive.
CPEN Co-op Postings

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
🎯 My Goal: Machine Learning - Here's the plot twist: both degrees get you there.
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:

Your degree is a toolkit, not a life sentence. CS gives you the theory toolkit. CPEN gives you the systems toolkit. Most jobs need both. More generally, there is no shortage of people who are in careers completely irrelevant to the degree they graduated with. I've seen people go back to university for second degrees in what they're truly passionate about. A degree opens doors, but it's your skills, projects, and adaptability that let you walk through them and thrive in whatever room you choose to enter.



  • 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.