<p>I mean the ABET accredited CS degree.</p>
<p>It’s often housed in the engineering department, but CS the degree isn’t really engineering, but a sort of applied science.</p>
<p>Software engineering degrees are definitely closer to engineering. In theory, SE is as much an engineering discipline as any other. However, the field is relatively new.</p>
<p>I would say CS, no, and SE, yes. Well, give it some time for this distinction to settle down. The fields are too new to have settled down completely… it’s still mostly market forces that are driving curriculum choices.</p>
<p>I say yes. You’re bundled in with the engineering school, you take just as rigorous a curriculum as other engineers, and at USC the CompE and CS curriculums differ by just 3 courses.</p>
<p>Theoretically, I would say that CS is a science, and science is different from engineering, hence CS is not an engineering discipline.</p>
<p>Practically, I would say that CS programs don’t study CS fully or exclusively, and are geared towards producing software, or more in the abstract a working system, which is squarely in the camp of engineering.</p>
<p>CS is so new and so revolutionary - and so economically powerful - that CS majors don’t really dedicate studies to CS topics only, and software engineering is really less like engineering and more like a cross between construction management, business, powerpoint slide production, and CS.</p>
<p>In an honest-to-God CS program, you would study:
Algorithmic Analysis
Formal Language Theory
Complexity Theory
Abstract Algebra
Probability and Statistics
Graph Theory
Combinatorics
Linear Algebra
Set Theory
etc.</p>
<p>Maybe you’d throw in a programming class or two and call it an application. It would be a glorified math degree. In a real software engineering degree, you’d take
Software Process
Software Quality Assurance
Software Modeling
Software Construction
Operating Systems
Computer Organization
Computer Architecture
Programming Languages
Computer Networks
etc.</p>
<p>Again, programming optional.</p>
<p>Maybe you’d add a few electives or introductory-level courses from each program to the other for breadth. But you wouldn’t have, as you see now, the following:</p>
<p>Programming
Algorithms
Operating Systems
Formal Languages
Software Modeling
Graph Theory
Software Process
etc.</p>
<p>It’s really quite amazing what a variety of things CS majors are required to learn. I think that this is what makes CS an interesting and valuable undergraduate degree… the deemphasis on depth and the insistence on breadth.</p>
<p>Because any CS major will tell you that Formal languages has about as much in common with Software Process as Public Speaking has in common with Yoga 101.</p>
<p>Why are you asking? </p>
<p>At many colleges it’s in the school of engineering; the college considers it to be an engineering degree; and many large engineering-oriented companies will employ the grads as Software Engineers and also consider them and call them engineers. It’s all semantics.</p>
<p>It pretty much is. Theoretical CS like algorithms, data structures, AI and the like is more like math than engineering. But the way most universities offer their CS degrees amounts to software engineering anyways, as the courses most demand significant amount of time implementing said data structures/algorithms in a way which emphasizes techniques of software engineering.</p>
<p>But what exactly is SE? And what is difference between CS and SE?</p>
<p>Please give your answers in for dummies format. And how much math is required for both?</p>
<p>SE is about writing software. Math, like statistics, is used in modeling systems. The focus is placed on techniques rather than proofs and the goal is producing a system rather than developing understanding.</p>
<p>CS is about computation. Math forms the content of CS - not mainstream math, perhaps, but it’s math in the strict sense of the word. Proofs rather than techniques. Etc.</p>
<p>Hopefully you get the idea.</p>
<p>Just to put in some insight here. Most companies would much rather hire a CS person with knowledge of SE principle rather than a SE standalone. The very reason why SE degrees have been slow to propagate.</p>
<p>
</p>
<p>Thats pretty funny because of your list of 9 subjects, I took all 9 in my CS degree along with the majority of your first list also.</p>
<p>I’m not sure what your intentions were, Birds Eye, but you come off as a little arrogant.</p>
<p>Those lists I gave were merely examples of courses with which people would be familiar. Clearly, I’m not going to go to the trouble of researching all possible courses for hypothetical college curricula. Those courses are intended to convey my thoughts as to the broad areas each hypothetical major would actually involve.</p>
<p>Clearly, due to ABET accreditation standards, most CS programs will cover most of the material I presented for both CS and SE degrees. If you want to get technical, I’ll try to come up with ~60 hours of in-major required courses for a CS degree, so about 20…</p>
<p>Algorithms & Data Structures I & II (6)
Algorithms & Data Structures I & II Lab (2)
Programming Language Syntax and Semantics I & II (6)
Programming Language Syntax and Semantics 1 & II Lab (2)
Theoretical Computer Science I & II (6)
Theoretical Computer Science I & II Lab (2)</p>
<p>Numerical Analysis I & II (6)
Abstract Algebra I & II (6)
Mathematical Logic I & II (6)
Graph Theory (3)
Combinatorics (3)
Number Theory (3)
Probability and Statistics(3)
Linear Algebra (3)
Information Theory (3)</p>
<p>Of course, if you wanted more coursework to throw into the mix, you could require or make a pool of electives out of the following:</p>
<p>History of Computing (1-3)
Philosophy of Computing (1-3)
Computer Ethics (1-3)
Computing Education (3)
Queuing Theory (3)
Data Mining (3)
Cryptography (3)
Compression (3)
Steganography (3)
Type Theory (3)
Model Theory (3)
Category Theory (3)
Frontiers of Computer Science (1-3)
Directed Reading (1-3)
Research/Thesis (1-3)</p>
<p>I feel like I’ve beat this pretty much to death. Throw in a few gen-ed classes or a required minor outside of CS, a concentration, whatever, and there you have it. You’re looking at a 4-year college major that looks more like a math major than a CS major, but which actually covers all the major CS areas and applications areas.</p>
<p>Then again, as I said previously, I feel there are distinct benefits to experiencing a wider variety of material than the purely mathematical stuff noted above. CS degrees are unique in that way. Although I prefer theory, I relish the courses that make me get outside my comfort zone… the ones like architecture and circuits and software process. More than what you learn, I think it’s how broad an experience base you have developed in order to cope with change that makes you valuable.</p>
<p>The distinction between CS and SE is usually a bit blurred because some universities don’t really differentiate between them. If I had to take a stab at the difference using an example of a computer game software product (to keep it somewhat approachable for the uninitiated):</p>
<p>-Computer scientists research new techniques and methods of implementing ideas. In our game example, this might be coming up with algorithms that improve graphics or artificial intelligence. This is often what propels technology forward.
-Software engineers would design the layout of the game’s components and how they interact: which graphics engine to use, the content pipeline, where the post-processing framework fits in, object/class hierarchies (weapon > gun > pistol > beretta or something), the tools and specifications for certain objects, etc.
-Programmers would implement the design created by the software engineers. This would be writing the actual code and “filling in” the application.</p>
<p>Of course, game developers probably don’t hire “computer scientists”, and I’m sure their programmers are responsible for the software engineering tasks… this is merely a trivial example.</p>
<p>
</p>
<p>Seconded. Before I transferred, I took all of those classes in CS as well.</p>
<p>While yes there are some good Abet CS schools, the vast majority of top CS schools have no Abet accreditation for CS and do only have it for Computer Engineering. My CS degree is not Abet accredited and I took everything a EE did, except the EE classes, though I did take Physics 1 & 2. My degree also consists largely of SE classes, but no management or economics classes. </p>
<p>Sorry if I sounded arrogant, it wasn’t intended.</p>
<p>
</p>
<p>CS degrees may or may not be ABET accredited. However, even if they are ABET accredited, they have a different kind of ABET accreditation than engineering degrees. Engineering degrees have ABET/EAC accreditaton, while CS degrees are ABET/CAC. So even ABET regards CS degrees as distinct from engineering degrees.</p>
<p>ABET also accredits degrees in engineering technology (ABET/TAC) and applied sciences (ABET/SAC). Again, degrees in these fields are accredited separately from those in engineering.</p>
<p>In the US, the practice of engineering is largely unregulated. So in most situations, pretty much anyone can claim to be an “engineer”, whether regardless of whether they have a degree in engineering, technology, CS, business, basket weaving, or even no degree at all. So if you have a CS degree, but want to call yourself an engineer, just go ahead.</p>
<p>In legally regulated situations, such as professional engineering licensure, typically only ABET/EAC degrees are regarded as “real” engineering degrees. A CS degree, even if ABET/CAC accredited, would not be regarded as legally equivalent to an ABET/EAC degree for such purposes. Computer engineering degrees, on the other hand, often do have ABET/EAC accreditation, and in this case do qualify as “real” engineering degrees.</p>
<p>And I’ll just throw this in: that even if your degree isn’t ABET accredited, it probably still follows the guidelines for ABET accreditation. Many universities just don’t see the utility in getting their CS program accredited. Most programs - even the non accredited ones - usually look about the same.</p>
<p>And Corbett:
Everything you said is actually true. However, if we’re going to talk about what something really is, or rather what it ought to be, then we shouldn’t dwell on the technicalities of current institutions.</p>
<p>I still believe that a proper CS degree is emphatically not engineering; that a proper SE degree emphatically is engineering; and that present CS and SE degrees fall in a middle range; neither has completely separated off from the others in practice, although in theory the two are wildly different. Perhaps 100 years from now, there will be distinct college majors for CS and SE, the two having as much in common as our current Physics and ME degrees do. You have to bear in mind that CS/SE is new and wildly in demand, so that college curricula have not had the time to overcome market forces and sufficiently differentiate.</p>
<p>In any event, I don’t believe current CS degrees are “engineering”. I do believe they are at least as valuable and require at least as much work to master, however.</p>
<p>“Most companies would much rather hire a CS person with knowledge of SE principle rather than a SE standalone.”</p>
<p>I don’t think that this is true. I see a lot of job postings for CS types to do essentially tech jobs where no knowledge of theory is needed. There are lots of application programming jobs that look for CS and CIS majors where theory really isn’t needed either.</p>
<p>If you work for one of the big software engineering firms, then the knowledge of theory is usually expected because you may actually get a chance to use it.</p>
<p>
ABET also appears to recognize the distinction, since they accredit CS degrees under ABET/CAC, and SE degrees under ABET/EAC. At some schools (such as Drexel), CS and SE are distinct majors with different forms of accreditation: undergraduates have the option of pursuing either an ABET/CAC-accredited CS degree, or an ABET/EAC-accredited SE degree. </p>
<p>However, since ABET accreditation is generally considered optional for both CS and SE, many schools are unaccredited for one or both disciplines. These other schools may or may not recognize the same distinctions as ABET.</p>
<p>My school has accredited CS and SE programs, and they differ by like 3-4 classes, tops. You could do both by a pretty trivial use of electives. Considering one to be engineering and one to not be engineering at this stage in the evolution of the disciplines seems like wishful thinking.</p>
<p>I think it depends on the school. Some schools may want to emphasize its differences from an engineering discipline while other schools may not want to. Other schools may not really care at all.</p>
<p>Either way, CS is an integral part of engineering. Most engineering majors these days learn some sort of programming, even if it is just MATLAB. </p>
<p>My school lists it with science and mathematics. We dont have a SE major, but I think the fact that it was listed in the sciences was just an arbitrary decision made decades ago when they were organizing the course catalog. I really dont think much thought went into it.</p>
<p>"Either way, CS is an integral part of engineering. Most engineering majors these days learn some sort of programming, even if it is just MATLAB. "</p>
<p>Statements such as these make me worry that people outside of CS really have no idea what CS is about. Perhaps it was just poor word choice. You certainly don’t think that CS and programming are interchangeable concepts, do you?</p>
<p>A lesser evil but an evil nonetheless is thinking that an introductory programming course for engineers and scientists in some small way contributes towards an understanding of basic CS principles. In my experience, it doesn’t… but then again, perhaps it’s different elsewhere. Perhaps you can say what CS you learned in your programming class?</p>
<p>Sorry for the tangent. I guess it’s sort of relevant to the thread, though.</p>