Hello, I would want to be a software engineer in the near future. Which major should I take (if I’m admitted) at UC Berkeley: EECS or CS
That’s a question @ucbalumnus is probably better prepared to answer. My two cents though is that you seem focused on a single, very competitive admit, that doesn’t offer SE per se. For several reasons, you should broaden the scope of your search. Good luck!
At UCB, graduates of EECS and L&S CS both go into software jobs. Comparison of the majors:
https://eecs.berkeley.edu/academics/undergraduate/eecs-cs-comparison-chart
@ucbalumnus, no doubt they CAN, the question that I don’t know the answer to is, are CS majors who then do SE overtrained in theory and undertrained in practice. Any thoughts?
CS courses from any of probably hundreds of decent CS departments should include both theory and practice, so that graduates will be ready to enter the workforce writing software.
Now, if you mean “software engineering” in terms of processes and methodology, many CS departments do offer a specific course on that, and/or include some of those topics in other courses, even if they do not offer a major with that name.
Most CS (and EECS) grads end up doing software engineering, and I would say “yes” in response to the question.
I don’t know if you can be “overtrained” in theory, but employers will almost always pick job candidates with practical skills over theoretical skills. Many employers have long complained about the lack of practical skills on the part of newly-minted CS grads. A popular gripe from employers early in my career was that undergraduate CS programs prepare students for graduate school rather than the workforce. I still think there’s a lot of truth to that.
However, decades ago, computing resources were more limited (a whole class would share a computer with a fraction of the computing power that a cheap desktop/laptop today has), so programming projects and assignments had to be more limited in size and scope.
Probably one of the biggest differences in writing software in school versus elsewhere is that elsewhere one needs to deal with years or decades old legacy code and backward compatibility requirements.
Hence the reason I asked. If the OP wants to be a SE, there are programs specifically in SE. At my son’s school for example, they offer both CS and SE (and computer engineering). Certainly a CS could do SE, and most probably do, but why not look at SE programs specifically IF that’s what the OP wants to do?
SE as a college major is like CS, but with more emphasis on processes and methodology. Compare SE and CS at a school with both:
http://catalog.calpoly.edu/collegesandprograms/collegeofengineering/computersciencesoftwareengineering/bssoftwareengineering/
http://catalog.calpoly.edu/collegesandprograms/collegeofengineering/computersciencesoftwareengineering/bscomputerscience/
It is not necessarily true that taking Software Requirements Engineering, Software Construction, and Software Deployment is better for all industry software jobs than taking Introduction to Operating Systems, Programming Languages II, and Theory of Computation I. Of course, each has sufficient technical electives that it is possible for an SE major and CS major to take identical sets of courses after filling in the electives.
Yea, at CP in particular, there are enough open spots in the curriculum to make one probably mirror the other. A student going in though (or me for that matter) doesn’t know what to choose to make themselves “more practical.” It seems that by choosing SE, that happens automatically. I could be wrong though. That’s why I posed the question.
The extra processes and methodology courses in the SE major do not necessarily mean “more practical” for all software jobs. Indeed, since computer programs interact with the operating system (or are parts of the operating system), the operating systems course may be “more practical” for many software jobs.