Computer Science vs Computer Science and Engineering

<p>I am interested in the field of computer science and software development.</p>

<p>Some colleges only offer CSE majors, while others only offer CS majors.</p>

<p>If I were to major in CSE rather than CS, would engineering courses take the place of some CS courses, therefore losing some CS in favor of the E? Or is it just a title difference?</p>

<p>Thanks</p>

<p>depends on the program.</p>

<p>The important things are (a) CAC ABET accreditation and (b) the actual courses you’re taking as part of the program. The name of the program means significantly less, although it might be beneficial to go with BSCS/BECS/BSECS/BCS (science/engineering) programs over BA/BACS (liberal arts) programs, in some cases (although this heavily depends on which school you’re talking about; a BACS at one school might be much more impressive than a BSCS program at another).</p>

<p>(a) CAC ABET accreditation assures some standard of education which employers and graduate programs can recognize. This is particularly helpful if your school or program is not widely recognized as being one of the best CS schools or programs. It’s third-party quality control, which is a good thing.</p>

<p>(b) While CAC ABET is a good baseline, you want to make sure that you’re getting some core set of CS courses. Different people have slightly different ideas of what constitutes a core CS education; roughly, I’d say you want to make sure it’s feasible (through required or elective courses) to get instruction in the following areas…</p>

<ul>
<li>Introductory programming with any programming language</li>
<li>Intermediate programming with a procedural, object-oriented language</li>
<li>Programming languages (theory/comparisons/paradigms/etc.)</li>
<li>Discrete structures & mathematics</li>
<li>Algorithms and data structures</li>
<li>Computer organization and architecture</li>
<li>Operating systems</li>
<li>Computer networks</li>
<li>Theoretical CS (formal languages, automata, complexity, etc.)</li>
<li>Thesis/internship/capstone project/design experience</li>
</ul>

<p>A good CS program will probably also require the following courses outside of CS:</p>

<ul>
<li>Calculus I - II (limits, derivatives, integrals, series, sequences)</li>
<li>Linear algebra</li>
<li>Probability and statistics</li>
<li>Digital electronic circuits (combinatorial logic, state machines, etc.)</li>
</ul>

<p>You will also be better served by a program in which you can take a couple of courses in CS electives, such as:</p>

<ul>
<li>Artificial intelligence</li>
<li>Software/systems engineering</li>
<li>Numerical methods/analysis</li>
<li>Parallel/distributed computing</li>
<li>Human-computer interaction</li>
<li>Web/mobile/embedded software</li>
<li>etc.</li>
</ul>

<p>If two programs measure up more or less equally according to those criteria, I would probably say that the choice is a wash; decide based on other factors.</p>

<p>i kinda disagree with the post above.
You can basically be a successful software engineer and not take 90% of those classes.</p>

<p>I speak from experience! </p>

<p>Of course, it doesn’t hurt to know some artificial intelligence and parallel/distributed computing, but the vast majority of jobs do not involve these areas. Just know a language well, like java or C++. And know data structures well, only because they ask that in interviews. And boom! You’re a software engineer.</p>

<p>aegrisomnia is just mentioning the core components of a CS education, not what’s required to be a software engineer.</p>

<p>

</p>

<p>This is true, however, learning the fundamentals of computing (either in school or on your own) will make you more valuable and knowledgeable, in general, over a wide variety of software jobs. If you learn “just enough” to get through a Java or C++ interview quiz, sure, you might get a job, and have some success (in that or similar jobs), but you’ll be at risk if in the future, such jobs are not as plentiful.</p>

<p>The current ethos of software hiring is for specialization, but this is not always the case.</p>

<p>@JamesMadison I mention those areas as electives; it wasn’t my intention to suggest that every software engineer needs to have taken all of those courses. Indeed, I only suggest that aspiring software developers might be better served by programs offering courses in those areas. I tend to think that the richness of the course offering, and the degree to which the program encourages students to explore various elective areas, correlates fairly well with program quality. Furthermore, coursework in any of these areas (including elective areas I didn’t mention, such as databases) probably won’t hurt either the student’s academic preparation or the student’s eventual marketability.</p>

<p>Regarding the first list… I do mean to suggest that, as part of a well-rounded education, any given CS student, who could be an aspiring software developer, could reasonably be expected to have taken those courses… so if anything in the first list is objectionable, then we have an actual disagreement. I categorically denounce and deny the notion that it’s acceptable for an aspiring software developer to know only enough about programming and data structures to get a job. With those qualifications, the best job someone could hope to get would be as a programming/coding technician… regardless of the title the company actually associates with the position. A sufficient knowledge of some of the fundamentals of CS is a matter of professional ethics, in my opinion, of which all aspiring practitioners should be keenly aware.</p>

<p>Now if what you’re arguing is that software development isn’t a profession, I might agree that many programming positions lack a professional quality; however, there are professional software developers and positions requiring professionals. Being good at writing C++ is neither necessary (per se) nor sufficient (nor close to it) for professionalism in software development.</p>