// you’re reading...


6 Degrees of Computer Science

A common confusion among high school seniors interested in computers has to do with too many, often similar, options available for pursuit in higher education. What is the difference between Computer Engineering, Software Engineering, and why is neither the same as obtaining a Computer Science degree? I have put together a graph of programs related to computer science education. Ultimately either will allow for a computer career such as a programmer, but each option also offers a unique flavour. It is essential to pick out where one fits best on this academic gradient, in order to ensure the best University experience.

Computer Science degree choices

Computer Science

The most familiar name, Computer Science is the pillar degree of the IT world. Available with a plethora of options and minors, there’s an aura of customizability around this major, but such difficult choices are usually not required until the 2nd year of study.

Computer Science is recognized as an independent discipline with an inherently mathematical nature. Its activity ranges from theoretical areas such as the theory of automata, system organization and logic design, formal languages and computability theory to applied areas such as scientific computing, programming languages, bioinformatics, software management, and computer systems.

This is where one gets to design algorithms, mathematically figure out their efficiencies, and actually gets to write out code to implement the said algorithms in practice. For those who enjoy figuring out just how the code works, and generally code monkey around – this should be the program of choice.

Software Engineering

Probably the closest program to Computer Science, this major will also fetch an Iron Ring for those graduating in Canada. If Computer Science is about writing code, then Software Engineering is thinking about writing the said code.

The technical requirements of these software engineers include a strong foundation in mathematics, natural sciences, and computer science; a broad education in software engineering and design; an understanding of computers and networks; a better appreciation for all aspects of the software engineering life cycle; and the use of methodologies and tools.

The curriculum requirements are not all technical. Industry is also asking for graduates who have facility across several disciplines. Software engineering graduates need to have substantial communications, business, and reasoning skills. Graduates should be able to work in groups; make presentations to technical and non-technical audiences; write coherent well-reasoned reports; and assess the social, technical, legal, and commercial implications of the technology they help to create.

Not quite the same level of involvement with the code. Software Engineering is more abstract, more “larger picture” focused. Lack of Pointer kung-foo is made up with non-technical skills such as communication and presentations. Management material education.

Computer Engineering

In many ways similar to Software Engineering, the Computer Engineering discipline deals with design of specialized type of software, and incorporates more hardware material into studies.

Computer Engineers apply algorithmic and digital design principles to design, build, and test computer software or hardware components used for information processing, communication, and storage – typically embedded in larger engineered systems and in distributed, networked environments. Application areas include communication, automation and robotics, power and energy, health care, business, security, entertainment, and many others.

For those lucky enough to have taken Computer Engineering in high school, this is it. Here you get to design your circuit board, and program it too! Lower level coding, but for actually physical gadgets. Pretty cool.

Electrical Engineering

A yet lower level approach, Electrical Engineering would be most similar to Computer Engineering, but with a heavier focus on hardware than software components of study.

Electrical Engineers apply electronic and electromagnetic/optical design principles to design, build, and test analog or digital devices, circuits, and systems – for processing, communication, and storage of information; distribution, conversion, and storage of energy; and process automation or robotics. Application areas include communication, manufacturing, power and energy, health care, computing, security, entertainment, and many others.

Someone has to push those electrons faster! Hardware level optimization really pushes the limits of critical systems, and for some this low level computing is where it’s at. A typical EE program still includes enough programming courses and is a similar enough discipline to allow one to write software.

Mechatronics Engineering

Mechatronics Engineering is an interesting program as it tries to integrate every other discipline from the above chart. Described as a mix of Software, Hardware, Mechanical parts, and lots of Math, there was still room to include a couple of programming courses into the program’s schedule. At the expense of elective courses.

Mechatronics engineering is an integrated approach to the design of computer controlled electro-mechanical systems. Mechatronic applications are pervasive in our everyday lives, so much so that we often take them for granted. Familiar examples of mechatronic systems include automotive anti-lock braking systems (ABS), SLR cameras, and aerospace “fly-by-wire” systems. These mechatronic designs are much more than simply the addition of a microcontroller to an existing mechanical system – their complete and properly integrated redesign is what makes them successful. An integrated design philosophy has been incorporated into the development of this program.

The broad scope will likely be appealing for those interested in picking up on a lot of new and varying material. Very management material course, as the education promises a middle ground that will unite all the other disciplines that are deemed to be unable to communicate well with each other.

After completing a year of Mechatronics Engineering, I have decided that I am much more interested in just the code and programming part, so now I’m in pursuit of a Computer Science degree instead.

Math / Physics

There’s also an option to ditch the computers all together, and pursue the pure logic, theory, and problem solving with the underlying Math. Computer Science is inherently mathematical in nature, and to some there is an appeal in this direction of problem solving by numbers, theory, and without limitations and bounds of programming languages.

Applied Mathematics is motivated mathematics, or mathematics to a purpose. It reflects the belief that there exists a basic order and harmony in the universe which may be described by the logical structures of mathematics. Thus, it is no coincidence that some of the greatest mathematicians of the past were also interested in engineering and physics.

A major in Physics also offers a similar level of fulfillment, though with a slightly different focus. Obviously either choice offers a minor in Computer Science to fine-tune the desired dose of exposure to actual programming.

In Conclusion…

Minors and options provide a fine gradient of choice between related programs. An undergraduate degree is a 4 or 5 year pursuit, so it’s best to consider all of the available options and excel in a field of interest and passion for the subject.

phdcomics.com : choosing grad school
So what are you interested in?

Read more


  1. Posted by Mike Minutillo | April 23, 2007, 9:19 am

    Definitely Pure CompSci (My actual qualification) and Software Engineering. I always wanted to go back and do Electrical Engineering or something similar. Something always appealed to me about programming with a soldering iron.

    I didn’t have a whole lot of choice here though. I enrolled in CompSci because I thought that was the only computing course here. No-one disabused me of that notion and so that’s what I did. In my last semester I discovered that I could have done Software Engineering which I think I would have enjoyed more.

    At least in CompSci you get to delve into compilers and automata and the like. I did get right into the theory :)

    Reply to comment

  2. Posted by Dessimat0r | April 23, 2007, 8:05 pm

    Software engineering did not require a strong mathematical background for me.

    Reply to comment

  3. Posted by Nick | April 23, 2007, 8:10 pm

    Bioinformatics, anyone?
    Computer Science Biology = awesome!

    Reply to comment

  4. Posted by Kai | April 23, 2007, 8:15 pm

    EE is pretty broad field itself, there’re a lot of EE people doesn’t even do hardware at all. In my school, EE program is more like 10% professionalism, 10% physics, 10% programming, 10% Electronics and 60% of applied math. The math covers mostly specialized applications and algorithms, for example, modeling a communication channel or designing a controller algorithm for a robot, (or my prof’s favorite, controller paper processing plant).

    Reply to comment

  5. Posted by Ran | April 23, 2007, 8:19 pm

    Computer Science and Physics are almost completely disjoint – I’m currently finishing a Masters in CS after a BA in CS, and never took even the most basic course in Physics. The only similarity is that they are both close to math. In fact, Physics should be on the other side of Math from CS, and of course very close to EE.

    Also, Computer Science is about writing code pretty much like Biology is about filling tubes. Coding is a tool (that also happens to be the most common job) in CS, not the main idea. I think only about 1/5 of courses in a bachelor in CS involve coding, and much less in graduate school. In fact, I know PhD students who never wrote code ever since they finished their bachelors.

    Reply to comment

  6. Posted by Douglas Muth | April 23, 2007, 8:21 pm

    I second Dessimat0r’s comment. I’ve been a Software Engineer for 8 years, and I don’t have much of a math background, having stopped at pre-calc.

    I also rarely think about writing code, I actually write it. :-)

    Here are my personal definitions:

    Computer Science: studying lots of theory; creating new algorithms/technologies; strong math background.

    Software Engineering: using readily available technologies to solve every day problems.

    My 2 cents.

    – Doug

    Reply to comment

  7. Posted by Mr. Fumbles | April 23, 2007, 8:22 pm

    How about IST. Information Sciences and Technologies :)

    Reply to comment

  8. Posted by Tony | April 23, 2007, 8:22 pm

    Interesting idea

    If you wanted to you could add the courses that offer a mixture of Business and Computer Science that many University’s are offering. Information systems springs to mind.

    You also get causes that focus of the Usability and Human computer interaction so there’s also scope for a psychology related section as well

    Reply to comment

  9. Posted by Nick | April 23, 2007, 8:24 pm

    Do pluses ( ) not work in comments boxes? Or am I just incompetent?

    Reply to comment

  10. Posted by Drk | April 23, 2007, 8:27 pm

    Does anybody know how those programs would fit in Quebec’s educational system? I’m currently doing a “Technique de l’Informatique Industrielle” course that I think would end up being a CS minor with an industrial part to it in other parts of the world, but I’m not quite sure.

    I’m currently thinking just getting a CS Bachelor’s, or getting a software engineering degree, but I’d prefer computer engineering or mechatronic’s degree, but I have no idea what those are here in Quebec.

    If anyone has any idea, please enlighten me.

    Reply to comment

  11. Posted by scogoth | April 23, 2007, 8:36 pm

    Thanks for the great article (and comic). My friend and I are in Grade 11 and want to pursue an education in computers. We didn’t really know what the difference between all the fields were, we even asked an old graduate who is in comp sci. This really helped clarify our choices.

    Reply to comment

  12. Posted by Clibb | April 23, 2007, 9:07 pm

    I’ve always liked this slogan that is posted on one of my senior lecturer’s wall:

    “The scientist builds to learn. The engineer learns to build.”

    Reply to comment

  13. Posted by yz | April 23, 2007, 9:10 pm

    In response to Drk, the description for computer engineering and software engineering are pretty accurate for Quebec. If you want to deal with hardware and non-computer things, and really be considered an engineer, go for electrical. Computer engineering is between the two worlds, so although you have a very solid background in both (at my school -McGill-, it was much closer to EE than Software Eng), sometimes you feel like you’re not specialized like the other two. Software is very new, and people will confuse you with CS, but you rapidly notice it’s much more useful to the job market (again… it’s simply the difference between science and engineering. One theorizes a lot, the other applies).

    I am not qualified to talk about your DEC, nor have I ever heard about a mechatronics degree in Quebec.

    Last little comment about the comic: You laugh, but the prestige and name brand of your school helps. It really depends what you want to do, if you’re going for research and grad, pick a school that has a good program in your field. If you’re planning on working, and perhaps working outside your city/province… Unless you’re famous because of your own work, no matter how crappy your school is in a field, the name matters more. (I can testify.)

    Reply to comment

  14. Posted by MAF | April 23, 2007, 10:02 pm

    Additionally, a degree in Information Technology (IT) has grown in the last decade and has become popular and causes additional confusion over computing-related degrees.

    From Rochester Institute of Technology:

    Information technology has emerged over the last decade as a unique academic discipline, distinct from computer science, software engineering, and computer engineering. While those disciplines focus on creating new technology, information technology focuses on selecting, integrating, and deploying technology to meet the needs of end users. In other words, information technologists are “users advocates,” whose primary mission is to make things work for end users in all sectors of society. Since every organization, enterprise, and individual in society needs to make effective use of computing and information technology, the demand for competent IT professionals far exceeds the supply, and the gap only widens as computing environments become more powerful and more complex.

    The confusion particularly surfaces when asking the question, “What type of jobs do the various degrees prepare me for?” and trying to understand the overlapping answers given by competing degrees and schools of thought. When competition gets particularly heated, I’ve seen a lot of misleading information in marketing materials.

    Reply to comment

  15. Posted by Cyber Bob | April 23, 2007, 11:39 pm

    Where does cybernetics fit into the picture?

    Reply to comment

  16. Posted by blabla | April 24, 2007, 12:03 am

    Computer Engineering has a lot of math a lot of CS and a little physics. With a CPE degree you are a most a semester away from a minor in CS, or Math and even biometrics. I would not even mention an Information technology degree in the same breath as any of the above degrees it is far inferior. All in all it comes down to what you want to do.

    Reply to comment

  17. Posted by MzK | April 24, 2007, 12:05 am

    Reply To DRK:

    I’m at l’École Polytechnique de Montréal in Software Engineering, and the description here is dead-on. You will do a lot of math, a lot of Software Dev Process, a lot of Analysis&Design, UML, some managment/communication, and a little general engineering (mechanics and such). All the rest is learning about the various aspects of computing : networking, graphics, embedded systems, system modeling and specification, computer architecture, algorithm analysis&design, OS architecture ( plus threading, and synchronization etc), database design, testing&validation, all that. There is a lots of coding in lots of different languages, and all in all, it’s a great program.

    here is the pdf for the new lessons schedule (the whole program is getting an update):

    All in all, you will get a really good education, and you will learn more than simple coding and algorithm design, which is more the focus in Comp Sci. Plus, you get your ring!

    Reply to comment

  18. Posted by retro vintage | April 24, 2007, 3:44 am

    And as they say
    “You wondered why you are confused?”
    It is amazing that many of these so called academics are just putting in time with posters of skiing and golfing on the walls.
    Ask about their favorite skiing runs or golf courses and watch their jaws drop .
    Ask about their start in computers “Goes all the way back to punch cards…”
    If you talk about early computers – your vintage Apple II for example watch for panic.

    Reply to comment

  19. Posted by subcorpus | April 24, 2007, 4:00 am

    but not all colleges and universities have the same modules …
    so i guess it could be a bit different here and there …

    Reply to comment

  20. Posted by phinn | April 24, 2007, 4:22 am

    There is Engineering and there is everything else.

    Computer Science is NOT engineering.

    If you get a degree in Comp Sci, you’ll never be one.

    EE, CoE, SE, all good majors. Comp Sci is easy in comparison

    Reply to comment

  21. Posted by damsabum | April 24, 2007, 8:06 am

    The description at the top of this thread is pretty accurate. I am a software engineering professor in a computer science and engineering department. We have degrees in computer science, software engineering and computer engineering. Computer science is the intersection of software engineering and computer engineering here, plus some additional theory courses like formal languages and programming language theory. For Douglas, the reason that you have not much math background is that you are a programmer calling himself a software engineer. This is a problem in much of the software development industry. When software engineering became popular, many programmer’s jobs were turned into “software engineering” jobs, because it sounded better, and as a result, those in industry think that software engineers are glorified programmers. Software engineers are to software what civil engineers are to structures. Software engineers design software to satisfy customer requirements based on theory developed by computer scientists to operate on hardware designed by computer engineers. Programmers are low level functionaries who program to engineer’s specifications, much like Rosey the riveter. Neither computer scientists, computer engineers, nor software engineer’s are merely programmers, although they can certainly go that route. They are much more. Also, in response to Ran, the reason you didn’t take physics is because you got a BA in computer science, not a BS.

    Reply to comment

  22. Posted by Angelo | April 24, 2007, 8:22 am

    thanks, you really help me think what i should do, i just saw computer science and never realized that there were these fields of study too! Thanks.

    Reply to comment

  23. Posted by hmm | April 24, 2007, 2:29 pm

    I have to agree with the guy above me, Comp Engineering makes Comp Sci look like cake… at my school we had to take lots of calc, physics, differential EQ, and tons of other physical sciences courses.

    Reply to comment

  24. Posted by Adelino | April 24, 2007, 2:53 pm

    I am a Software engineer or computer engineering student (this one didn’t seem that clear to me) but I also have strong Computer science bases. I think it’s clear that you shouldn’t think these as different things because most courses are a mix. I mean every engineer has the first two years of math and computer science and use it like a tool. Of course if one wants to be an engineer he will need 5 years of study to be one (at least here in Portugal). But you can have a degree en computer science and afterwards become an engineer.

    Reply to comment

  25. Posted by AJ | April 24, 2007, 2:59 pm

    I disagree with Phinn. Comp Sci is an engineering branch. This debate is supported by those who are obstinate and know orthodox definitions of Engineering. Even in my school there is a huge fight whether Comp Sci is engineering or not. It is.

    It does not mean that if the name does not has “engieering” word in it, then it is not an engineering.

    Reply to comment

  26. Posted by Bruce | April 24, 2007, 6:57 pm

    Regardless of the degree, companies are primarily looking for developers. So, make sure you really like programming (coding) if you are thinking about pursuing one of these degrees. It might even be a good idea to try contributing to one of the many open source projects out there just to see if it’s something you enjoy doing. At the same time, keep in mind that in India, there are villages with computer centers where they can do IT work remotely for companies in the US.

    Reply to comment

  27. Posted by Rao | April 25, 2007, 3:39 am

    I did Computer Science Degree and Minor in Management, graduated in 2003.
    ComSci degree allows you to customize your degree according to your interest i.e AI, Networking, Software Engineering and etc.
    I am currently working as a Software Engineer in a MNC developing Embedded Software.

    Reply to comment

  28. Posted by MomKicker | April 25, 2007, 5:55 am

    Bioinformatics, anyone?
    Computer Science Biology = awesome!
    I don’t see what has to to biology with computers…

    Reply to comment

  29. Posted by serdar c. | April 25, 2007, 6:01 am

    i have been graduated from statistics, which means i have “STRONG” mathematics background and mastered in computer science,im intrested in mostly software engineerin. theres something i want to say that strong mathematics background helps a lot of things when u want to code an optimised and an efficent computer pogram.
    IMHO maths is a must have for a software engineer (also for any type of engineers)

    Reply to comment

  30. Posted by Badger | April 26, 2007, 7:53 am

    Woody Allen said ” Those that can’t do teach” “Those that cannot teach teach gym”.
    The current refrain is that those that cannot teach act become computer educational academic counsellors advising and counselling future students of which computer course to take at the their educational facility in the computer science faculties.

    Reply to comment

  31. Posted by Craggar | April 26, 2007, 4:04 pm

    I thought this was going to be a cool twist on the “6 degrees of Kevin Bacon” thing, whereby you could thread through a database of Student/researcher-to-faculty/sponsor relationships, in order to determine how far away any given PhD or candidate in Computer Science was separated from, say, Donald Knuth, or some other luminary in the field.

    Boy, am I disappointed.

    Reply to comment

  32. Posted by RickPofKC | April 26, 2007, 4:15 pm

    I must respond to damsabum. I don’t know where you have been for the last decade, but by your definition, programmers are mostly extinct outside of government contracts. “Programmers are low level functionaries who program to engineer’s specifications, much like Rosey the riveter.” If it were only that easy! I design, code, test and implement automated solutions to real-world problems using high-level languages. I analyze what combination of (proven) technologies should be used. I develop and document functional requirements, test cases and project plans. I spend lots of time trying to understand why my clients don’t know the first thing about the business they are in. I attend lots of meetings where someone draws boxes with arrows on a white board and then arrogantly believes they have developed a specification I can “rivet” together. Don’t get me wrong, I have great respect for true Software Engineers. I just dislike the posers who think working, robust code magically appears from UML.

    Reply to comment

  33. Posted by Bill | April 26, 2007, 8:19 pm

    I have to agree with Serdar. Mathematics has been underplayed in all of this. A strong mathematical background is mucho cogent to anyone in any technological field. I have my BS in mathematics and comp sci and my MA in mathematics and not that applied BS all pure.

    Any one of the above majors are rooted in mathematics. On the engineering side (excluding software engineering) the underlying principals are rooted in physics which if you ask me is in one sense applied mathematics plus experimentation of course. Comp sci and software engineering are purely mathematical in nature since they are all based on logic, which is also the heart of mathematics. Without a solid foundation in logic you can never be a good at programming or mathematics for that matter.

    I even found that my knowledge of set theory helped me optimize and reduce a database project I worked on.

    Point being well there has to be some props to the mathematics :)

    But in all seriousness with out doubt my knowledge of mathematics has definetly propelled my skills and my career 10 fold. And knowing mathematics and having a good solid knowledge of programming can probably get you rich the quickest. Just check the salaries of quant programmers on wall street.

    Reply to comment

  34. Posted by Mike Minutillo | April 26, 2007, 10:46 pm

    I have to throw my (not inconsiderable) weight behind RickPofKC. It’s interesting to note that when I talked about leaving my job, they were talking about replacing me with at least three guys.

    And as far as UML goes, Diagrams may not crash but they do not solve business problems either.

    A diagram is a great of explaining your thoughts to someone who is not technical but it is a terrible way to “spec out” a job. It is laden with the same ineffeciencies of miscommunication that written text and even speech is.

    Nothing beats sitting down with the customer and actually talking to them directly. Looking at what they do. In order for someone to just “code to spec”, they have to be lacking passion, interest, drive and any other human quality. They are in it for the money. It is their job and no more.

    Reply to comment

  35. Posted by Jonathan Day | April 26, 2007, 10:57 pm

    The descriptions are somewhat regional and should be taken only as a guideline outside of the region the author was familiar with. For the program I did in the UK, Software Engineering involved considerable programming and I was expected to master a good half-dozen computer languages, whereas a Computer Science course involved minimal science and not a whole lot of programming – which is why I ignored it. Actually, I should make one minor change to my initial sentence – there will be courses that match perfectly the descriptions given in the article, but they might not have the same names. There is no substitute for careful examination of what the University, Polytechnic or College thinks it is supposed to teach. Also remember that the lecturers make up 90% of the course. The material will be the easy part – the majority of those who fail courses will fail because humans make lousy communicators.

    Reply to comment

  36. Posted by CmdrTaco | April 26, 2007, 11:34 pm

    Interesting defintions. It’s a pity that every university comes up with their own definitions which may not neccessarily match what you have here though.

    Reply to comment

  37. Posted by damsabum | April 27, 2007, 8:21 am

    Okay, I have to apologize to RickPofKC. What I was trying to say is that the act of programming is no different from hammering nails and putting in rivets, other than the skills required are different. My point was to say that programming is neither computer science nor software engineering. Computer science and software engineering both involve programming, but are not completely made up of it. I realize that there are a lot of people in industry like yourself that do a lot more than just program, and I have a lot of respect for them. My thesis is that in order to solve the ever-present software crisis, we need to develop a way to separate the duties of design and programming. You, as good as you likely are, will not be able to build a very large software system by yourself, without some kind of design to work from, and if you build the design and then program the code yourself, it will be much more likely that you will miss something, as would I or anyone else. We all need help, and separation of duties is a necessary next step in the evolution of software development, IMHO.

    Reply to comment

  38. Posted by Buu Nguyen | April 29, 2007, 10:33 am

    I have to disagree with the guy above me because he seems to advocate the separation of duties between design and programming and that the people who design (output: design diagrams or some kind of formal specifications) should be different than the people who write code (output: code). Sorry, but that does not work in software engineering, in which coding itself is actually a design activity, instead of a routinely straight-forward operation. Here’s why.

    First, the can be no UML diagrams which are complete enough in order for the poor monkey coders with the language/library knowledge can code them without spending a lot of creativity and thoughts – unless we have come to a state in which UML can be “compiled” directly into working software. Changing the accessibility level of a class is design, moving a field of this class to another is design, and even changing the name of a method is design – but do you reflect these design decisions in the UML, given the fact that, in a medium-size project, hundreds of such decisions are made by dozens of developers per day?

    Second, why does the waterfall model fail, even though it has the right separation of design and coding activities? Requirement changes problem is one thing, the other thing is due to this exact design-coding separation: some diagrams are created without being verified in anyway, and only until the coding phase starts that these diagrams can be proved to NOT working (or meeting users’ requirements). In addition, this model locks the ability of having the design decisions made during coding (move fields, extract interface etc.) to be reflected back into the design – in other words, the model completely denies the role of coding as a design activity. And it failed.

    Finally, with the latest trends in the industry, such as test-driven development and domain-driven design, the gap between “traditional” design and coding activities are no longer there; there’s no designer, there’s no coder, there is only developer who can do both. And you know what? These TDD and DDD work really well.

    So, what the industry needs? It needs people like us to recognize that coding is truly a design activity, and we need to hire developers, not designers (who can only draw pictures), and coders (who have no brain and are assumed to mechanically and routinely code those pictures drawn by the designers).

    Reply to comment

  39. Posted by RickPofKC | April 30, 2007, 11:07 am

    To damsabum: Thank you for clarifying your remarks. I completely agree that without a strong background in system design theory, creation of an efficient and extensible Enterprise-level system would be unlikely. (Especially by me!) However, implementation of design requires understanding and interpretation of the design. (See Buu Nguyen comments.) Professional programmers are able to visualize how the design maps out to code structures and user interfaces. That is our strength – assuring the design can meet the functional/usability requirements. And you are correct, this is neither Computer Science nor Software Engineering.

    Reply to comment

  40. Posted by Ahmed Adel | July 24, 2007, 7:20 pm

    Dear Readers,
    I’m an IGCSE student who just finished this year and i feel that my future lies in computers in which a future career might be present so I’m just asking on the differences between computer science and computer engineering and what’s more beneficial in terms of financial and social ways of living on the long run(5-10 years) please i ask for your advice as the time for the university application is near?????

    Reply to comment

  41. Posted by Tony | July 24, 2007, 10:07 pm

    @Ahmed – the academic difference between Computer Science and Computer Engineering is discussed in the above article and comments. The financial benefit will largely depend on your experience, skill, and passion for the subject – the best in either field will obviously be better off than the worse in the other. I suppose that there are less Computer Engineers than Computer Scientists out there, but that doesn’t mean that it’s any easier or more enjoyable to study. I would recommend pursuing your interests rather than base this decision on a possibility of a minor financial gain or loss. If you work for a paycheque, you will only be mediocre at best.

    Reply to comment

  42. Posted by Stephanie | October 2, 2007, 8:21 am

    I am also an IGCSE Student who is taking the tests in a few months. I am considering going to an American university. I have to choose my IB options next term, and I am considering going into Computer Science or Engineering etc. Which subjects would you recommend me to take (higher/standard levels) if I wanted to apply for a degree in Comp Science and/or engineering?

    Reply to comment

  43. Posted by Tony | October 2, 2007, 10:46 am

    Stephanie, you should probably consult with the Universities that you will be applying to. Engineering programs usually have an extensive list of courses that are required for admissions (at least here in Canada). Computer Science is more flexible, though there are still recommendations. It’s almost always: English, as much Math as you can take, Physics, Chemistry. Technical courses are not always required.

    Reply to comment

  44. Posted by Dave | January 21, 2008, 5:53 pm

    My University has slightly different definitions of those fields but your descriptions are all fairly close to how I would describe them. We also had an Information Science degree which was a joke. They had a final exam in first year based entirely on MS Word !

    Interestingly, the Comp Sci course (along with the Electrical Engineering, Software Engineering and Computer Engineering) was taught by the Engineering department. In fact, the first year for Software Engineering and Computer Science were identical to each other and involved classes from Electrical Engineering. The Information Science degree, on the other hand, was taught on the opposite side of the campus and only shared one class with the Engineering disciplines. (Although Engineering students could choose electives from Info Sci if they wanted to.)
    This supports quite strongly the idea that Comp Sci is an Engineering discipline, even though it doesn’t have the word “Engineering” in it’s name. However, my girlfriend, who has a degree in Electrical Engineering from the same University, disagrees with me and maintains that Comp Sci is not an Engineering Discipline. We actually studied some of the same classes under the same teachers and she still maintains that what she did was Engineering and what I did wasn’t.

    Of course, if your University calls their equivalent of our Information Science degree a Computer Science degree then I’d have to agree with Phinn. That course is not Engineering. The trouble here is that we are all using the same name for subtly different (and sometimes wildly different) courses.

    The only way I can see to reconcile these differences is to judge a person by their deeds, not the letters the put after their name.

    Reply to comment

  45. Posted by Lone7 | January 22, 2008, 4:12 pm

    Phinn, you seems to not know what you’re talking about.
    At my school, CS, Physics, EE, CE, and Mathematics are all under the SSE (School of Science and engineering). Let me give you a clear defintion of the word engineering
    (engineering is another way of saying “applied science”). Computer Science is an applied science. at my school CS, CE, EE has to take to same amount of Math and Physics. Computer Scientists don’t like to stick the word engineering in every major that has a lot of Math and Physics, so they call themselves “scientist” instead.

    If you think CS is so easy, try designing and building a compiler, design a new algorithm (mathemically) for robotics movement, come up with a new encryption algorithm,
    design a better data structure or information processing, come up with a new programming language for multi-core processors (oh, by the way, this is one of the major issues in computing that computer scientists are having to solve), or design an AI as smart as a human being, etc.. only when you can do that, do you have the right to diss about other majors. To me, all majors are interesting and has its own difficulties.

    Reply to comment

  46. Posted by kcf65x | February 18, 2008, 2:14 pm

    Hi there. I just want to ask which one is the best between Computer Engineering and Software Engineering?

    I want to know the Pro and Con of each one.

    I like both of them, but I can just get one of them.

    I like doing things with Software.

    So, any recommendation for me please?

    Reply to comment

  47. Posted by sirkit | February 26, 2008, 11:36 pm


    SE and CE are very very similar. You can think of SE like CE, except with less hardware studies involved. CE is like a crossover between Computer Science and Electrical Engineering, so SE is almost the same, except with less emphasis on hardware.

    Reply to comment

  48. Posted by cs_is_counterstrike | March 1, 2008, 3:44 am

    who says computer science is cake in comparison to ECE and EE? From my experience of the lower division course work its all the same. CS majors have to take all the same math courses(calc, multivariable calc, linear algebra), the only difference is we have to take a full quarter of linear algebra while engineers take a quarter of mixed linear algebra and differential equation. The same can be said about our general physics, though I know Civil and Mech and various other engineer majors do have to take statics or dynamics ECE and EE majors dont. I would not be surprised if those EE/ECE majors have a similiar course that specializes more so in the electrical aspect of physics, but that would be moot. While engineers are required to take chemistry, strangely enough since our computer science program is in the science department CS majors have to take biology.

    I wouldn’t know about the upper division courses but i’m curious if this is where degree of difficulty in course requirements deviates? Considering that CS really much more math intensive then simply being a program monkey, i find it hard describe them as so. Computer Information Systems and Mangement information systems would better fit the description as from my school’s curriculum they dive straight into coding, but even then its still inadequate as they’re specialized in business, management, and accounting aswell. I may seem defensive but describing a CS major as a code monkey is rather derogative considering all the logic courses required…

    |CIS/MIS Majors found on the internet| > |CS majors found on the internet| >|ECE/EE majors on the internet|

    Reply to comment

  49. Posted by sirkit | March 2, 2008, 11:39 pm


    ECE majors DO have to take both statics and dynamics at my university.

    Reply to comment

  50. Posted by Reversing Declining Computer Science Enrollments | May 22, 2008, 10:12 pm

    [...] are several CS specializations or different CS related degrees that can be offered to students.  Some of the most common of these variations include software [...]

  51. Posted by Joe | May 23, 2008, 12:45 pm

    I am a student at the Milwaukee School of Engineering in the states and our school was one of the first to have their software engineering program accredited by the ABET. Many people argue whether SE is really engineering and how its different from CS. Well I can tell you that there are schools who offer “software engineering” courses that are not really engineering.

    At my school the CE and SE first year almost identical. SE’s take the same math courses as all other engineers here. This includes Calc1-4, differential equations, stats, linear algebra, discrete mathematics etc. We also take almost many of the natural science courses that other engineers take, which includes chemistry and three physics courses.

    My friend is currently in the CS program in Twin Cities and says she sometimes wishes she had done a software engineering program instead. The reason being is that she gets a lot of theory but nearly as much practical knowledge as an SE. SE’s are trained to enter the workforce immediatly upon graduation. Many CS graduates taking software developer positions often do not have the same practical knowledge that an SE graduate obtains. Not to say that CS does not have its place.

    SE and CE are much more related than SE and CS. That is if its an accredited SE program not a software developer program with the word engineering stuck in it. A CS major does have a lot of flexibility in what they chose to study though.

    Reply to comment

  52. Posted by Gerald | June 3, 2008, 8:07 am

    I completed a Computer Science degree, but found it to be a bit too vague on too many subjects. Saying that, it was a new degree in that university at the time… If I had my time again, I would perhaps look for a more specialised degree. Computer Science does give good grounding to go into research etc, but for normal day to day job I suspect there are better.

    Reply to comment

  53. Posted by Matthew | June 22, 2008, 2:27 pm

    I’ll be going into ‘Computer Science’, within that at DePaul Chicago I’ll be able to choose a specialization such as game programming, or network security ect.

    Very informative though!

    Reply to comment

  54. Posted by JB | July 5, 2008, 10:20 am

    This helped me quite a bit. I have been really confused about the differences between different computing majors, and just when I though i got the idea of it, I would get lost again. I’m currently deciding between an Information Systems major and a Computer Science one. I think I’ll go into the latter one..

    Reply to comment

  55. Posted by livelynotebook | August 8, 2008, 2:23 pm

    Hey, you should take into account also systems biology. Wet biology, combined with modelling and math. I’ve been working on it now.


    Reply to comment

  56. Posted by protospike | August 14, 2008, 1:40 am

    Great article! I’m glad someone has written so well about this topic. At some Universities you can do a CSSE course (which is Computer Science AND Software Engineering). That way you can get a broader education, which can (significantly?) enhance job opportunities.

    If you really love building software for the end-purpose of letting people use it, you’re more of a software engineer. If you really love spending hours figuring out how a piece of code works, then you’re more of a Computer Scientist.

    Reply to comment

  57. Posted by DoubleOrchid | April 6, 2009, 11:30 am

    Thank you, damsabum. Your paragraph really made me think about me pursuing computer science a lot more optimistically. I have been struggling between choosing to major in computer engineering or computer science for a while now. I still need to do a bit more research!

    Reply to comment

  58. Posted by Choosing between Computer Science and Computer Engineering | CompSci.ca/blog | December 27, 2009, 6:20 pm

    [...] related majors are confusing, especially at the age when one makes their University choices. 6 Degrees of Computer Science is a good place to start, but the choice is not always clear. Some delegate the choice of their [...]

  59. Posted by Brandon | September 30, 2020, 6:43 am

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>