<p>I am a graduating Senior in Computer Science, which is very close to Software Engineering. So, I have some first hand experience, and I know lots of honest-to-goodness software engineers.</p>
<p>The short answer is yes, you will probably pull off such a major change if you choose to do so early enough. The question is, do you want to? Which brings us to the long answer…</p>
<p>The long answer is… long.</p>
<p>CPE and SE share a lot of material over the first two years. In fact, the only differences that come to mind are the EE intro to circuit analysis classes (which CPE has, and SE doesn’t), and CPE/CSC 225 versus CPE/CSC 229/269 (or that other CPE specific class that they added and the number I forgot). </p>
<p>After those two years, the curriculum takes two vastly different directions. CPE goes into a bunch of embedded development stuff (and more EE stuff), culminating in a micro-controller project (CPE 329/369), networks (CSC/CPE 464) and the CPE capstone. Software engineering does a pair of group-based classes where teams build medium-sized pieces of software (CSC/CPE 308-309), then a year-long software engineering capstone, which is a team based project where a company specifies an application that they would like written, the teams write it and deploy it over the year. They have some shared required classes (CPE/CSC 357, and ummm… Maybe OS? Double check your flowcharts on that one) and I think both have a decant number of tech-electives scattered around (fun stuff ranging from Android development to databases to security to graphics/games, see your catalogue/PASS for details ).</p>
<p>This means you can delay switching a little bit, but not too long. Be mindful of the 24 unit rule: Under current rules, you cannot change majors if your new major would leave you with 24 or more excess units when you graduate. Since CPE and SE have so much in common, it will be 2-3 years before you even have to worry about it. During that time, you will be taking lots and lots of programming classes (123, 101, 102, 103, 229/269 or equivalent, 357), so you will get plenty of exposure to programming. So, yes, you will have the skill needed to work on whatever small programs/apps you would want to do after that, although additional practice is always good for your skills. </p>
<p>I normally don’t advise people to wait on change of major plans. Here, I’m making a bit of an exception. Definitely keep thinking about it, and keep an eye on the flowcharts. But, since so much of the curriculum is shared, you have some time to decide. And, if anything, it’s to you advantage to wait a bit. A second change of major is guaranteed to be harder than the first. </p>
<p>Two other minor notes: 1) It’s not too hard to take CSC technical electives as a CPE. Since you have to take everything through 357, you already have the prerequisite classes for most technical elective series.
2) If you have the relevant skills, I don’t think most software development companies would turn you away for having a degree that says “Computer Engineering” instead of “Software Engineering”.</p>