Slashdot Mirror


Computer Science vs. Software Engineering

theodp writes "Microsoft's promotion of Julie Larson-Green to lead all Windows software and hardware engineering in the wake of Steven Sinofsky's resignation is reopening the question of what is the difference between Computer Science and Software Engineering. According to their bios on Microsoft's website, Sinofsky has a master's degree in computer science from the University of Massachusetts Amherst and an undergraduate degree with honors from Cornell University, while Larson-Green has a master's degree in software engineering from Seattle University and a bachelor's degree in business administration from Western Washington University. A comparison of the curricula at Sinofsky's and Larson-Green's alma maters shows there's a huge difference between UMass's MSCS program and Seattle U's MSE program. So, is one program inherently more compatible with Microsoft's new teamwork mantra?"

39 of 322 comments (clear)

  1. Engineer is better fit to lead product development by Anonymous Coward · · Score: 5, Insightful

    In my opinion CS majors have always been the philosopher kind who like to nit-pick every angle of development. Product development leadership requires someone more practical as an engineer.

  2. as if by iamagloworm · · Score: 5, Insightful

    as if the schools these guys went to makes a difference? their skills are learned from experience working in the industry and their value is in using their judgement based on that experience to make the best choices.

    1. Re:as if by Dahamma · · Score: 5, Insightful

      Yep, these are senior executives with a thousand or more people reporting to them who spend most of their time in meetings. The details of computer science or engineering classes they took in college 30 years ago are pretty much irrelevant to their current jobs.

      And it's especially true in this case, as personal computers were in their infancy when they were in college, anyway. Trying to compare two programs based on what they are *today* makes no sense when they graduated in the 80's.

    2. Re:as if by eric31415927 · · Score: 2

      This is the same in most industries. A degree from any number of schools gets one an interview. Experience and ability gets one a job.

    3. Re:as if by Sir_Sri · · Score: 2

      Schools matter somewhat in terms of their career trajectories and the experiences they earned. You can't get hired as a professional engineer if you aren't an engineer sort of thing, so your school can shape your biases somewhat. But as you say, at this stage, corporate executive level, they're much more about their experience after the fact.

      But different schools, especially computer science schools are wildly different in their programmes, so you can't really compare 'CS to SE', CS at one particular school to SE at a particular school sure, but in general, not so much. Some places SE grows out of comp eng and is in part electrical like comp eng, some CS places are more hardware than software, some are even pure maths vs programming etc.

      A fresh grad is not a corporate executive, much as our Ivey business grads would like to think that, 10 years of experience after a degree you can go a lot of different things. Your degree sets up where it's easy to start, but not where you're going to go.

    4. Re:as if by eugene+ts+wong · · Score: 2

      I don't understand. Why wouldn't they send in their resumes and cover letters and talk about how good they are? Isn't that how it normally works at all levels of society?

    5. Re:as if by nateb · · Score: 2

      Employment at that level is much more about who you know and how you network and politick.

      --
      -- Nate
  3. CS is Math, SE is an application by betterunixthanunix · · Score: 4, Insightful

    Computer science is a branch of mathematics; software engineering is a collection of methods for applying that math in the "real world." Software engineering is not about state machines, compilers, programming languages, parallel algorithms, etc.; it is about how to use write "concrete" implementations of such things in a way that makes sense for real-world computation.

    --
    Palm trees and 8
    1. Re:CS is Math, SE is an application by iamhassi · · Score: 4, Insightful

      Science is "why", engineering is "how". Science studies why things are the way they are, while engineering just accepts the way things are and works with that. That said, would rather have a scientist, since they understand things better.

      --
      my karma will be here long after I'm gone
    2. Re:CS is Math, SE is an application by betterunixthanunix · · Score: 3, Insightful

      Eh, most computer scientists are not going to be able to develop a system that meets specifications by a deadline unless they also have software engineering skills. I know expert cryptographers who can barely implement a working software system and who have no idea how to make software for use in real applications. Computer science research projects are usually "write only" software that can only be used by the person that wrote it, because it is written without regard to anything beyond proving a particular point or idea (so-called "grad student code," at least at my institution).

      So really, for a real-world project, you probably a (good) software engineer.

      --
      Palm trees and 8
    3. Re:CS is Math, SE is an application by betterunixthanunix · · Score: 2
      --
      Palm trees and 8
    4. Re:CS is Math, SE is an application by Alomex · · Score: 3, Interesting

      Eh, most computer scientists are not going to be able to develop a system that meets specifications by a deadline unless they also have software engineering skills. ...which in practice are taught in nearly all computer science undergraduate programs. So anyone currently claiming some superiority of SEers over CSers is likely just trying to prop their own degree.

      I've developed shipping code for companies as well as research projects at university. Research code is write-only since it is not worth architecting properly something that is meant for one time use, not because of some supposed lack of software engineering skills.

      Heck! a good software engineer is equally likely to program a write only perl script to do a one time migration of their system.

    5. Re:CS is Math, SE is an application by Alomex · · Score: 2, Insightful

      As to N.A. and A.M if you ask most mathematician they will tell you those fields are not really math.

      The Curry-Howard link is neither here nor there. Math is applied routinely in many sciences, and is often inspired by reality (more so in the past that recently) yet this has never been central to what math is.

    6. Re:CS is Math, SE is an application by betterunixthanunix · · Score: 2

      As to N.A. and A.M if you ask most mathematician they will tell you those fields are not really math.

      Except for those mathematicians who work in applied fields of math, who will tell you that they are mathematicians. Not that people could be biased or anything like that, or that experts might not agree on how to define their field.

      The Curry-Howard link is neither here nor there. Math is applied routinely in many sciences,

      The Curry-Howard correspondence is not a statement about an application of math in computer science. In simple terms, the correspondence is this: a mathematical proof can be converted into a computer program, and a computer program can be converted into a proof of some mathematical statement. Yes, there are some technicalities here (e.g. a program with an infinite loop), but this is not just some application of math to computer science, it is a fundamental link.

      --
      Palm trees and 8
    7. Re:CS is Math, SE is an application by loufoque · · Score: 2

      computer scientists are not going to be able to develop

      You could have stopped there, that's accurate enough.

      Computer scientists can't write code, and they really shouldn't. It's a waste of both their time and that of others.

    8. Re:CS is Math, SE is an application by betterunixthanunix · · Score: 2
      Software engineering is taught but not required by most CS curricula (at least from what I have seen), which are generally focused on training students to use programming languages and giving them some surface-level exposure to theoretical and practical concepts.

      Research code is write-only since it is not worth architecting properly something that is meant for one time use, not because of some supposed lack of software engineering skills.

      Except that research code is not always meant for one-time use; there are quite a few research programs that are used in multiple projects, which which are poorly documents, poorly engineered, and hard to run. I have seen a lot of grad students spend weeks trying to figure out how to extend some part of a research project written by some other grad student -- and once they have figured it out, they just hack out the solution, with little attention paid to design or even documenting what they did (it is particularly amusing to see this happen in software engineering research groups). Part of the problem is a lack of demand on the part of PIs, who rarely require that code be documented or well-designed and who are usually more concerned with publishing a paper by some deadline (there are exceptions, usually from groups that are more concerned with solving a problem in the real world than with padding the PI's CV). Another part of the problem is that for most graduate students, the exposure to software engineering tools and practices ended with the use of build systems (and usually did not go very far in to that).

      There are exceptions, but let's put it this way: if someone told you they had a PhD in CS, would you assume they could design a maintainable or reliable software system?

      --
      Palm trees and 8
  4. Deja Vu? by Anonymous Coward · · Score: 5, Insightful

    It feels like we just discussed this a week ago - oh, wait, we did!

    http://ask.slashdot.org/story/12/11/10/2038211/ask-slashdot-developer-or-software-engineer-can-it-influence-your-work

    Another gem from timothy, right-supreme glorious editor for life.

  5. Scientists versus Engineers by Okian+Warrior · · Score: 3, Insightful

    An engineer uses his tools and techniques to solve problems.

    A scientist invents new tools and techniques.

    If you're just using your knowledge to build things for people, you're an engineer. Unless you're exploring the limits of knowledge, coming up with and testing new ideas, you're not a scientist. And publishing has nothing to do with it, it's a mindset.

    Knuth is a scientist - by laying out algorithms and describing their merits and deficiencies, he's essentially publishing a box of tools that others can use. Bill Gates is an engineer - he implemented known algorithms and solutions into a unified package (nothing new there).

  6. Re:It's the difference between science and tech. by betterunixthanunix · · Score: 2, Insightful

    Computer science, is a ... science

    Only in the old sense of the word "science," i.e. "knowledge," but then software engineering would also be "science." CS is not about gathering data then forming a theory; it is about developing logic systems from a set of basic assumptions (e.g. the semantics of your programming language, or of a theoretical computational system like a Turing Machine or Lambda Calculus). That would be mathematics (which at one time would have been called "science" as well). CS is a particular branch of mathematics: the branch that is concerned with computational methods, which was originally developed as part of an attempt to classify all mathematics in terms of symbolic manipulation (but which ultimately led to a proof that not all mathematics is symbolic manipulation).

    --
    Palm trees and 8
  7. Re:It's the difference between science and tech. by vux984 · · Score: 4, Informative

    Same as any other science degree.

    Most grads in math, physics, chemistry also end up doing relatively "mundane" jobs. A degree in bio-chem and you can be a lab technician. A degree in geology and you analyze oil drill results. Physics degree -- you might end up working on radio antennae...

  8. CS vs Engineering 30 years later by Anonymous Coward · · Score: 5, Interesting

    Those guys are 50 something. The difference between Computer Science and Software Engineering does not matter 30 years after you graduated. Whether you kept up with progress and what kind of experiences you acquired during that time is what matters. Old guy did not left because of the school he was in and the new guy was not hired because of the school he was. They left / have been hired because of what they did last 7 years.

  9. Silly question by Samantha+Wright · · Score: 2

    Compare what is emphasized in each curriculum. Whoever is contemplating this needs to seriously RTFM. The terms have very long and precise histories. The question may as well be "what is the difference between physics and structural engineering?" and the response would still be "why don't you use an encyclopedia?"

    ...Or we could get down to the actual question that the submitter was insinuating, which is "It is most likely that Sinofsky and his replacement will have different mentalities about how the Windows department at MS should be run. But will having a software engineer replace a computer scientist yield results that are better or worse for the company's bottom line?"

    --
    Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
  10. Software Engineering = the grind by russotto · · Score: 3, Insightful

    Software Engineering, in the sense of the Seattle University program, is the attempt to reduce the production of software to a set of reproducible steps that any monkey (code monkey) could accomplish. You know, you start with your requirements, you proceed to a high-level design using object oriented design techniques, then you make a low level design, and finally, almost as an afterthought, you write code. As anyone who has been on a software project which attempts to follow this particular discipline knows, it doesn't work. It does, however, succeed in its secondary goal of turning an interesting job into a horrible grind.

    I suspect working on Windows is already a horrible grind, so it probably won't make much difference.

  11. definition of a scientist by davidwr · · Score: 2

    . Unless you're exploring the limits of knowledge, coming up with and testing new ideas, you're not a scientist.

    So the lawyer at Apple who came up with a new way to patent page-turning is a legal scientist? Who knew?

    --

    --

    --
    Yeah, I know "Unless A then not B" doesn't mean "if A then B," but we are talking about a guy who is a proven expert at twisting meanings around.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  12. Reminds me of the king's toaster by Jim+Hall · · Score: 4, Funny

    While not a perfect match to the above, I think the story of the king's toaster is a good example of the difference between an "engineer" and a "scientist". I originally saw this on USENET in the 1990s, so the technology is a little dated:

    A great king summoned two of his advisors, and showed them both a shiny metal box with two slots in the top, a control knob and a lever. "What do you think this is?"

    One adviser, an engineer, answered first: "It is a toaster," he said.

    The king asked, "But how would you design an embedded computer for it?"

    The engineer replied, "Using a 4-bit micro-controller, I would write a simple program that reads the darkness knob position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the toaster and start the timer. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."

    The second adviser, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete."

    The adviser suggested a future-oriented embedded computer innovation, with a forward-ready platform: "Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too.

    "We must not forget the user interface. The lever that lowers the food lacks versatility and the darkness knob is confusing. Users won't want the product unless it has a user-friendly, graphical interface.

    "Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap."

    The king had the computer scientist thrown in the moat, and they all lived happily ever after.

    1. Re:Reminds me of the king's toaster by Anonymous Coward · · Score: 2, Funny

      I think your anecdote describes two different types of engineer.

      A true computer scientist would present the king with a paper that proves the toaster is a specific solution to a special class of problems having a property called "Breakfast Completeness".

  13. Why technical expertise helps by davidwr · · Score: 2

    If you are a manager with good tech skills, it's easier to detect technical BS and to ask the tough questions that will get you the information you want quickly.

    If you don't have the right skills, you need someone you trust who does at your side to fill this role.

    Now, at the 5000-person level, you do have a point. If she trusts everyone who reports directly to her not to BS her OR she has someone at her side who can ferret out BS, then she doesn't need a technical background. But if she isn't that lucky, she does.

    --
    Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
  14. What theoretical "nonsense?" by betterunixthanunix · · Score: 3, Insightful

    CS theory is not "nonsense" by any stretch of the imagination, even if you are only interested in doing "real world" work. The point of theory for professional programmers is to think about software in unusual ways; this broadens your ability to solve problems. The trend in programming languages over the past few decades has been towards the use of concepts that are common in theoretical CS; if that trend continues (and I suspect it will), theoretical courses will be more relevant as time goes on.

    Even C++ now has lambda expressions. Introspection was once a theoretical topic (e.g. Turing machines that can read their own description). Type theoretic concepts (type constructors, dependent types, etc.) are probably going to become more mainstream in the near future.

    --
    Palm trees and 8
  15. Re:Engineer is better fit to lead product developm by Lumpy · · Score: 4, Interesting

    Computer Scientists create things like linux.
    Software Engineers create things like Windows 8.

    Not trolling, This is a complete fact. Far more high level CS degrees are working on linux and OSS than Windows 8.

    --
    Do not look at laser with remaining good eye.
  16. Re:It's the difference between science and tech. by gtall · · Score: 5, Insightful

    I see you don't get the point of college education. It is supposed to stretch your mental capabilities so that when confronted with a new situation, you aren't without the mental faculties to understand and master it. Why should CS majors learn calculus? Because mathematical reasoning is important, and many CS people rub shoulders with engineers. You want to talk to them and be useful, learn your calculus...well.

    Higher Education is just that Higher Education. It is not Trade School Skill Boot Camp so you can regurgitate the latest buzzwords MS and the rest of their ilk cram down managers throats.

  17. What Makes a Good Software Engineer? by twasserman · · Score: 4, Insightful
    I have always found that the best software engineers are those people who have a solid background in computer science. That knowledge is valuable throughout one's career and enables one to participate effectively in discussions and reviews of architectures, data models, and more even after being promoted to a position that doesn't include writing code. To me, the two areas are complementary.

    Side note: I'm mystified at how someone with a Bachelor's degree in business can earn an MS in Software Engineering. Yes, management skills have an important role in an SE curriculum, but not to the exclusion of the technical skills.

  18. Re:Leaders don't matter by Seeteufel · · Score: 2

    Steve Jobs was a professional presenter able to sell visions. He treated his teams very inhumane. His corporate policies were clearly anti-developer. Jobs is dead and Apple a brand.

  19. Re:Engineer is better fit to lead product developm by master5o1 · · Score: 3, Funny

    Over paid for your education is doing it right.

    --
    signature is pants
  20. Re:It's the difference between science and tech. by Dahamma · · Score: 2

    Seriously? Well I know many people who majored in these and others and ended up as programmers/software engineers, lawyers, MBAs (corporate and I-banking), and a few MDs. One chem major ended up playing minor league baseball before going to med school. And a physics major is is now an CG animator.

    I'd go as far as saying the majority (as in more than half) graduating with those undergraduate degrees don't end up going on to academia/research, and that's from a school ranked #1 in Physics and #2 in Math programs in the US. Plenty do, but if "most" is defined as the majority I'd say the GP has a point.

  21. A Classic Treatment by ios+and+web+coder · · Score: 3, Funny
    This is a story that I got from the Internet (pre-Web), many moons ago:

    THE TOASTER

    Once upon a time, in a kingdom not far from here, a king summoned two of his advisors for a test. He showed them both a shiny metal box with two slots in the top, a control knob, and a lever. "What do you think this is?"

    One advisor, an engineer, answered first. "It is a toaster," he said. The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would write a simple program that reads the darkness knob and quantizes its position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the heating elements and start the timer with the initial value selected from the table. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."

    The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete. If we don't look to the future, we will have to completely redesign the toaster in just a few years."

    "With this in mind, we can formulate a more intelligent solution to the problem. First, create a class of breakfast foods. Specialize this class into subclasses: grains, pork, and poultry. The specialization process should be repeated with grains divided into toast, muffins, pancakes, and waffles; pork divided into sausage, links, and bacon; and poultry divided into scrambled eggs, hard-boiled eggs, poached eggs, fried eggs, and various omelet classes."

    "The ham and cheese omelet class is worth special attention because it must inherit characteristics from the pork, dairy, and poultry classes. Thus, we see that the problem cannot be properly solved without multiple inheritance. At run time, the program must create the proper object and send a message to the object that says, 'Cook yourself.' The semantics of this message depend, of course, on the kind of object, so they have a different meaning to a piece of toast than to scrambled eggs."

    "Reviewing the process so far, we see that the analysis phase has revealed that the primary requirement is to cook any kind of breakfast food. In the design phase, we have discovered some derived requirements. Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too."

    "We must not forget the user interface. The lever that lowers the food lacks versatility, and the darkness knob is confusing. Users won't buy the product unless it has a user-friendly, graphical interface. When the breakfast cooker is plugged in, users should see a cowboy boot on the screen. Users click on it, and the message 'Booting UNIX v. 8.3' appears on the screen. (UNIX 8.3 should be out by the time the product gets to the market.) Users can pull down a menu and click on the foods they want to cook."

    "Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk, and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap. (Imagine the difficulty we would have had if we had foolishly allowed a hardware-first design strategy to lock us into a four-bit microcontroller!)."

    The king had the computer scientist thrown in the moat, and they all lived happily ever after.

    --

    "For every complex problem there is an answer that is clear, simple, and wrong."

    -H. L. Mencken

  22. Personal Experience by EmperorOfCanada · · Score: 3, Interesting

    My personal experience would be that computer engineer is a better place to start a career and then start sprinkling computer science more and more. The CS majors (the worst being the graduate ones) blah blah all the time about big O yet somehow never master the career basics such as SQL or Linux administration. I find that they get bogged down with Big O and other analysis on problems where O^8 will still take nearly zero time and O just doesn't matter.

    Yet on the other end I find that many computer software engineers tend to master something like Java and then just wail away at every problem with their one mastered skill set. Then after a while they get a second skill set such as SQL and as time goes by they end up with a sort of vertical integration of skills. But where they don't usually progress is when you do have to look at a problem as a system and start doing discrete math, working out the nodes, connections, and so on. This is where computer software engineers will implement a cryptographic library but do it really badly leaving elephant sized holes.

    So I would say CS is often too pedantic, CE is too much like a plumber, but a CE with strong math and a good dose of CS can generate art. Sort of like Escher; he could draw quite well and had a good understanding of math, he combined the two into something incredible.

  23. Re:It's the difference between science and tech. by HornWumpus · · Score: 2

    I've personally had to break in a physics PhD, recently doing post doc at CERN (this was 10 years ago). It was ugly, very ugly.

    They assigned him to work on a Access front end for SQL server (spit), designed by another PhD (applied math, good at solving LPs, DB design involved lots and lots of columns, second table joined cause he ran out of columns.)

    They wanted him (the new guy) to find the useful bits in that steaming pile, which he was unprepared for. Nobody was, Heisenberg's uncertainty etc. That code was out of HP Lovecraft. It made people insane. To say nothing of the FORTRAN behind the scenes, that stuff was,,,interesting.

    I tricked the Access author into exposing an API of useful functionality, however backward assed. I showed him how to call the Access app from visual basic. (for which I will burn in hell for all eternity, he used this to feed a webpage!) Talk about a stack from hell, old school ASP, VB object, Access VBA called via OLE, FORTRAN.

    I should really be more ashamed, but I'm not. I quit shortly after. I gave them the last bit of glue but the mess is theirs. I had nothing to do with calculated GOTOs in the FORTRAN for example (next iteration entry point was a global with a non-discriptive name, all kinds of code added or subtracted *magicnumber*).

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  24. East vs. West then? by drwho · · Score: 2

    So you've got Seattle on one hand, and Massachusetts on the other. Massachusetts has a reputation of being more theoretical about engineering, as opposed to cheap and practical like west-coast people. Massachusetts-made thinks like DEC's VAX were big, expensive, heavy, tough, and polished. Seattle has...well ...MSDOS. Quick, dirty, gets the job done, ultimately Microsoft flourished and DEC withered and died. BUT concepts live on, as NT was done by ex-DEC people. West Coast is more hack, East Coast is more engineering. Personally, I am from Massachusetts and would like to think the Yankee 'craftsman' approach is better than the west-coast hippie 'hack', but the truth is, that the distinction isn't always easily made, and that elegant design needs some pragmatism as well. But, I think it's an interesting intellectual exercise when think of East Coast CS craftsmen vs. West Coast CE hackers.

  25. The Poorest Scientist by SuperKendall · · Score: 2

    Computer scientists can't write code, and they really shouldn't.

    It's a poor "scientist" that only thinks and never experiments.

    Real computer scientists need to also be adept programmers, because it turned out The Last One really wasn't and there is still code between thought and program.

    Also if your field of interest was computer languages it would be foolish indeed to try and design language features without understanding the pitfalls and benefits of said features in whatever languages they have appeared in.

    A computer "scientist" who does not program well is about as useful as a brick without mortar. All you can really accomplish is breaking other peoples structures while building nothing of your own.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley