Here at USC, I study Computer Engineering/Computer Science (CECS), a major that entails both software (Computer Science) and hardware (Electrical Engineering classes focusing on Digital Logic/Computer Architecture). The is that a CECS can go into either hardware or software, and that it is important to know the needs of a software designer to be an effective hardware engineer and vice-versa.
I love the diversity of my major. During my senior year of high school was when I first realized how awesome both were: I took both an AP Computer Science course and AP Physics Electricity and Magnetism course. As my good friend Zach mentioned in his blog post, Computer Science is really appealing for the logic/problem solving aspect of it and the ability to pick up many tools and trick on your own. My E & M class taught me how cool it is to build circuits by hand. The feeling of breadboarding/soldering a bunch of wires into something greater than the sum of its parts? Amazing. After building an electric hover craft in high school, I knew CECS was where I wanted to be.
I’ve also loved the curriculum here at USC. Professor Mark Redekopp taught my first Computer Science class, and I’ve had the fortune of having him for two Electrical Engineering classes as well. He’s an example of how awesome the professors are here: he knew everyone’s name on the first day of class, required 3 visits to his office hours a semester as part of a grade in order to establish a relationship with each student, and was really helpful and personable. He had us program a social network, program for multi-core computer chips, and program a robot to navigate an obstacle course, all in our first semester. Definitely a great way to start out!

In CS 101, I programmed a robot like this to navigate an obstacle course using infrared and sonar!
Other Computer Science classes I’ve taken include Data Structures (important for interviews!), Discrete Math, Algorithms (also important for interviews), Object Oriented Programming, Principles of Software Development, and Operating Systems. That last one is a toughie- luckily, the Professor, Michael Crowley, had office hours for four hours 3 times a week. I spent quite a bit of time in his office when I took that. This semester, I’m also taking a really exciting Artificial Intelligence class with Dr. Sven Koenig, who is a big name in that field.
On the hardware side, I’ve had Prof. Redekopp for Basic Computer Organization and Computer Systems Organization, as well as really helpful professors Shahin Nazarian and Monte Ung for Digital Logic classes. This semester, I’ve been taking Computer Networks and Analogue Circuits. I especially like these two, the first because of how amazing it is to learn how the Internet works, and the second because it is that hands on circuit building I discovered in high school.

An example of a circuit board I make in my Analogue Circuits class.
Research in Computer Engineering/Computer Science is as broad as the two fields it dips into. I personally do research in computer security and the professors I’ve had work in AI, parallel computer chip designs, design of large logic circuit systems, and more. I’ve seen automatically guided robots, game design labs, and much more.
Even though I see myself going into software and not hardware career-wise, I’m very glad I chose this major. There is something extremely exciting for me about knowing what happens from when you type a URL into your web browser, from the browser reading the data all the way down to the 1’s and 0’s level in the computer. I’ll be taking my last hardware class next semester as I wrap up my undergraduate degree, which will be sad to do. I definitely recommend this major to anyone looking at either Computer Science or Electrical Engineering focused on Computer Architecture, because you will come out knowing how to do both and will appreciate your skill set that much more because of the other perspective.