Skip to main content

“Hi, my name is Anna, I’m majoring in Computer Engineering and Computer Science, and I’m from right outside of D.C. in Northern Virginia!”

At college, you get really good at introducing yourself. But one of the most common questions I get when I talk to students outside of CS is, “Are you double majoring?”

I’m not — double majoring in two engineering disciplines sounds even a little too treacherous for me! Within Viterbi, I like to say there are four “flavors” of CS: “normal” CS, Computer Science and Business Administration (CSBA), CS Games, and my major, CECS.

What is special about CECS?

The name of the major is certainly a mouthful, and it contains a lot of curriculum, too. CECS is just a combination of CS and Electrical and Computer Engineering (ECE). I originally came in as an ECE major, but once I found out about CECS while attending an admissions event, I realized that it was more suited for my interests in both hardware and software.

Since there’s a lot of overlap between CS and ECE, the program effectively combines the classes that bridge that overlap to make it a cohesive program. When I was looking at schools, this wasn’t a built-in program at a lot of places!

While the ECE curriculum also builds in programming fundamentals, but through CECS, you take all of the lower-division CS requirements that CS students take. This means taking CS classes with CS professors, building all of the skills you need for everything from software engineering to theoretical CS. I get to hang out with my CS and CSBA friends in these classes!

This also means that you’re capable of working all of the jobs that CS majors do — last summer, I worked as a Software Engineer Intern at 222, a Y-Combinator startup, where I wrote a lot of user-interfacing code. It’s pretty common for CECS majors to end up working in software, especially early on, since our curriculum is very software-leaning for the first two years.

At the same time, the hardware curriculum for CECS is the same as the Computer Engineering track for ECE. The thing about hardware is that the barrier to entry of learning it on your own is more difficult — it’s costly, and there’s a lack of documentation online compared to topics in CS. It’s really nice to learn about it in school, where all of these resources are available to you!

A lot of people outside of CECS are often concerned about breadth over depth, but after having examined the curriculum at length, that’s not really the case. Undergrad is also a lot about gaining breadth so you have both the familiarity and skills of these topics so you can either investigate on your own or go to grad school to keep learning.

Compared to a lot of the other CS flavors, we’re definitely a smaller program, but that means you get a great cohort taking all of the same classes. There’s nothing quite like walking together from one class to another back to back!

To me, CECS is truly the best of both worlds. I’ve taken classes on data structures and algorithms, but I also understand circuit design and simulation. CECS is a happy medium between CS and ECE, and I often joke that it’s for indecisive people that can’t choose one of the two, and are instead procrastinating making their decision until they start working.

Anna Hsu

I'm studying Computer Engineering and Computer Science, originally from Vienna, VA and graduating in 2026. At USC, I'm a part of HackSC, the flagship hackathon on campus, and I write stories about research, accomplishments, and events occurring in the Thomas Lord Department of Computer Science. I also lead copy editing efforts for Morning, Trojan, a newsletter dedicated to instilling newsreading habits in college-aged audiences. In my spare time, you can find me listening to Mandopop, eating good food in LA + beyond, and going on runs!