Computer Science Vs Software Engineering

<p>Hi I'm debating which road to take both are very similar I guess I'm asking which is better as career prospects money, job security, what's the real difference between the two? Any insights or advice would be awesome thanks!!</p>

<p>A school normally doesn’t offer both Software Engineering and Computer Science as a major. Software Engineering is a bit more applied, whereas Computer Science is more theoretical, but often they are basically the same rose by a different name. If the same school offers both, look at the curriculum. In the case that SE is more applied and CS is more theoretical, I would advise going CS because it helps you later on when technology and languages used now and no longer used.</p>

<p>“Software engineering” is for people who don’t understand what CS is in the first place. Unfortunately in some universities there’s not much difference in the curriculum in CS or SE or IT or whatever it’s called. I.e. whatever it’s called, it’s “a computing curriculum”. Now in other places there’s a difference in the curricula and specifically the difference is in how the curriculum puts emphasis on theory/mathematics/software technologies/applied computing topics/information technology business, but a difference that may just be negotiable (i.e. maybe everyone interested in computing should just be doing a good CS curriculum and schools should offer just that).</p>

<p>Here’s what E. W. Dijkstra had to say about teaching computing science and the subject matter of computing science: [E.W</a>. Dijkstra Archive: On the cruelty of really teaching computing science (EWD 1036)](<a href=“http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html]E.W”>E.W. Dijkstra Archive: On the cruelty of really teaching computing science (EWD 1036))</p>

<p>I am going to piggyback on Reactor’s post…being a software engineer for now 24 years.</p>

<p>DO NOT WASTE YOUR TIME ON A PURE SOFTWARE ENGINEERING DEGREE. IT IS ONE OF THE BIGGEST MONEY GENERATING COLLEGE MAJORS FOR SCHOOLS OUT THERE.</p>

<p>Software engineering is basically the various phases to produce software. To ME, there is NO REASON to give 15-week semester courses on EACH PHASE of the software engineering life-cycle.</p>

<p>On top of that, each employer has their OWN flavor of software engineering, which THEY WILL TEACH you. All you need is ONE all-encompassing “Software Engineering” course in your CS or Math/CS major.</p>

<p>Why?</p>

<p>It is MUCH EASIER for an employer to teach your software engineering. The employer does not have time to teach you, operating systems, networks, database theory, data structures, object-oriented design/programming, cryptology or parallel computation.</p>

<p>

</p>

<p>Yeah.</p>

<p>I’ve always thought of the “software engineering process” being more of a matter of negotiation and teamwork. I.e. whatever “process” there is, it’s developed inside a team so that it matches what the team is working on and what kinds of people the team employs (i.e. how do they want to think about “the process”, which is also relative to the particular software being developed). And everyone just signs to some model of development either because they have to or because they all agree on it. I wonder if “agile” has become such a big buzzword as a “software engineering principle”, because it really emphasizes the non-rigor of the “software engineering process” and suggests that developers adapt “the process” to the project’s needs and the team and its preferences, and keep updating “the process” during the project to match specific needs or problems that arise. I.e. “software engineering processes” can be very natural processes and not something that’s carved in stone.</p>

<p>The core computing science curriculum on the other hand is meant to be pure computing theory. I.e. the guts and bones of computing. The theory is not something that’s very negotiable as it’s just the “hard stuff” about how computing technically works, what’s its theoretical framework (mathematics) and how computing can be developed.</p>

<p>And yes, CS curricula do usually include a single or a few courses that go through the different methodologies that have been developed for developing software in teams and that are meant to serve as a guidelines for facilitating efficient teamwork. I think that’s enough about software engineering processes.</p>

<p>The world changes, the technologies change, new technologies and new practices come and go and some are better than the others, but the underlying theoretical framework of computing stays pretty much the same. Thus, study CS.</p>

<p>Does it matter which school one graduates from to get a job at a top tech company like google?</p>

<p>

</p>

<p>Google and e.g. Microsoft have known to emphasize the theoretical foundations of computing. I.e. the stuff that you’re exposed to in a good CS curriculum. They (Google et al.) think that having a knack for theoretical CS and solving theoretical computing problems (e.g. those in discrete maths) makes for better programmers that know how to think about computing.</p>

<p>It’s not saying that it matters what term your degree has in it, but just that you’d be better off by focusing on the “hard stuff” in your studies.</p>

<p>In terms of schools, some universities are known for having a rigorous “real” computing science curriculum. So graduates from those programs are guaranteed to have some level of competence in the “hard stuff”, which is important for some employers (or at least having done a known degree programme in a well-known university is an easy way for verifying a job candidate’s supposed abilities and background).</p>

<p>Big companies like GAFAM recruit widely.</p>

<p>Small companies may only recruit local schools, or visit just a few out-of-area schools.</p>

<p>Regarding “software engineering” majors, at some schools, they are mostly similar to CS majors, but have more software engineering methods and process courses, rather than just one overview course that CS majors may have has a require or optional course. The CS major is generally preferable, since it has more schedule space for more different CS topics courses (algorithms, operating systems, networks, databases, security, etc.). But, at one school (SJSU), the software engineering major is significantly easier to gain admission to than the CS major, so students who would not get into the CS major may be able to use the software engineering major as a backdoor to a major that is fairly similar to CS (particularly with careful elective choices).</p>

<p>In the end, it doesn’t matter. There are software/cs jobs everywhere.</p>

<p>Check out the ACM/IEEE curriculum recommendations for computing majors: [Curricula</a> Recommendations ? Association for Computing Machinery](<a href=“http://www.acm.org/education/curricula-recommendations]Curricula”>Curricula Recommendations)</p>

<p>Reading through those should give you a fairly clear idea of the (academic, ideal) differences between CS and SwE at the collegiate level.</p>

<p>

Doesn’t seem to matter too much, other than getting the interview. Everyone begins with roughly the same starting salary. You’re better off going to an easier college and just studying (gaming) the interview process, because the same questions and types are repeated over and over again and software engineering doesn’t seem to focus much on the proof side of CS that better known schools get into. Someone with a 4.0 from MIT who messes up a question on an interview (maybe for being too analytic and spending too much time on a question) will not get an offer, whereas someone with a sub par 3.0 from community college who doesn’t mess up (e.g. they memorized a large handful of questions from a book) would get the offer.</p>

<p>This, at the least, is what I’ve learned from the interviews I’ve done.</p>

<p>Thanks guys for all the input taking classes that are required for both majors next semester and will go from there!!</p>