I have been promising this article for quite a while now, but as with anything I feel strongly about, I would rather wait until I have the time to put in the effort it deserves. After a morning of proverbially bashing my head against the desk running gene ontology experiments in R, today appears to be that time!
With high school finished for the year and thousands of young adults getting ready to take a plunge into university, I want to talk about a question that is often the source of many debates: What is the difference between computer science (at the level of an undergraduate degree) and software engineering? I will start by addressing the obvious ‘conflict of interests’ here, given that I myself graduated from a Bachelor of Computer Science (and Bachelor of Computer Engineering) early this year. I do not think computer science is amazing because I chose it. I chose it because I thought it was amazing. Furthermore, some of the most intelligent people I know are software engineer{s|ing students}, so I have a great deal of respect and can appreciate the importance of both degree programs.
With that out of the way…
Why the confusion?
Where do I even begin…
Egotism
Let’s face it: Everyone thinks their degree is the best. After all, as hopefully intelligent individuals, if you thought another degree was better you would be doing that one instead. Normally this isn’t an issue, as someone interested in journalism isn’t going to be swayed by a physicist’s mocking of a communications degree. Unfortunately, when two degrees are as superficially similar as BCompSc and BE(Software), issues can arise.
I recently asked a group of software engineering students what they believed the difference between the two degrees were. The first response was exactly what I expected: “Computer scientists code until it works, software engineers code until it couldn’t be coded better”. For an intelligent yet easily-influenced high school student struggling to pick which degree to enroll in, hearing something like this at a university open day can very quickly result in dismissal the shorter (3 vs 4 year) BCompSc program as the “easier alternative”.
The corresponding and equally naive opinion of a computer science student often smells of academic elitism. “Computer scientists learn to solve complex problems. Software engineers learn how to document their solutions”. This dynamic is made even worse by unfortunate nomenclature, with computer scientists and software engineers often respectively insisting that the names “engineer” and “scientist” are poorly-deserved.
Industry
There are a lot of things that our comrades in industry don’t appear to fully understand (and for every issue I have with the tensions between computer scientists and software engineers, I have a hundred with the equally naive tensions between university vs TAFE-certified workers). When a company needs to hire someone to write code, that’s what they care about: Their ability to write code. As this skill-set sits at the intersection of BCompSc and BE(Software), there is little need for an understanding of what goes on during the final years. Nor is there one, for the most part.
So what’s going on?
They say a picture tells a thousand words, so here goes:
This is how industry views BCompSc and BE(Software)
This is how software engineers view BCompSc (and vice versa)
This is the reality of the situation
What are they really?
I quite like the following figure, which I have borrowed from a 2005 ACM report. Although projecting four different degrees (including electrical and computer engineering) onto one axis (hardware <-> software) is obviously a dramatic simplification, I still believe it is information that no prospective student should be without. It even includes the distant cousins of BCompSc and BE(Software): Information Technology and Information Systems.
http://www.acm.org/education/education/curric_vols/CC2005-March06Final.pdf
Computer Science
Below is a good description of computer science, produced by Concordia University:
Computer scientists are primarily concerned with the design of algorithms, languages, hardware architecture, systems software, applications software and tools. Applications range from simple game playing to the control of space vehicles, power plants and factories, from banking machines to intelligent fault and medical diagnosis. Computer professionals, in short, are concerned with the creation of computer and information systems for the benefit of society.
For the most part, I agree with this description. However, one thing that never ceases to annoy me is the emphasis that people put on the way you do things, rather than the big picture of what it is you are trying to do. Computer science is a field that predates the modern computer, and a lot of people seem to forget this. If you wanted to describe it to your grandmother, “it’s a degree in applied mathematics” would probably be more accurate than “it’s a degree where you learn how to code”.
Better still is a description that one of my colleagues at the University of Melbourne (a Carnegie Mellon computer science graduate) presented: “Computer science is a degree in learning how to solve tricky problems”. Any “learning to code” is entirely secondary to this purpose and is simply a reflection of that fact that high technology permeates every aspect of modern society, and any student who reaches the end of their degree without an appreciation of this has, in my opinion, received little value for their time and money.
Software Engineering
Again, from Concordia University (I have removed the first line, because I simply do not agree with it):
… Software engineers learn much more about creating high-quality software in a systematic, controlled, and efficient manner. Software engineers are trained in all aspects of the software life cycle, from specification through analysis and design, to testing maintenance and evaluation of the product. They are concerned with safety and reliability of the product as well as cost and schedule of the development process.
This is another excellent description, and I agree with the distinction it is making. Software engineers write better software, and it would take a very talented (or arrogant) computer scientist to deny it. Where computer science is about taking complex problems and deriving a solution from mathematics, science and computational theory, software engineering is very much focused around designing, developing and documenting beautiful, complete, user-friendly software.
So which is better?
For anyone not willing to sit through 1000 words of my rantings, the answer is simple: neither. That being said, each certainly lends itself to more readily to different areas. If you are interested in academia or industrial R&D, I would definitely suggest computer science. If you see yourself developing and maintaining large software solutions for large businesses, software engineering is probably more for you. If you just love the process of writing code and have little idea of where you’d like to end up in 3-4 years, toss a coin and decide later.
In closing, I would like to emphasise that this article is full of personal opinions and generalisations. Just because you are a computer scientist doesn’t mean you cannot write good code, and it certainly isn’t the case that software engineers are code-monkeys that don’t know how to problem solve. (Nor is everyone in industry too dull to understand the difference between degrees.) I am just trying to shed some light on the general focus of the two degrees, and hope that it will prove useful to some prospective students out there
Please feel free to add your own comments or commentaries below!
sir i do not understand whats the difference between software enginner AND BS CS i am not interested in coding what major should i choose to not become a programmer a code i do not want to code its boring and what should i do i do not know please open my mind with details and explanation my mind is more in software enginner friends say me programming is less in software enginner and programming is more in bs CS im so confused bro help me
I strongly suggest avoiding both degrees if you do not enjoy programming.
Thank you, I think that was a great description. It is much more clear to me now, and I will give software engineering a try!
Hello David,
I have already graduated from electrical and computer engineering department, but i am more specialized in electrical energy issues such as electrical power systems, power plant building etc…Given the fact that i really want to extend my programming skills ,which of those two would be the best choice for a second degree?
If you already have an engineering degree, I’d probably lean toward computer science.
Great Explanation. Cleared my mind about a lot of doubts that i had. I was about to take computer science but finally decided to take up mechatronics and learn programming on the side. Great article. Thanks.
Very Nice. I really enjoyed reading this. Im currently studying software engineering and I love progamming and everything about it. I am good at programming in c#, C++ and Java but i feel like i’d do more if i could study something electrical. i really dont know how to explain this but i like building stuff. Where do i go? How do i take this programming passion with me there? Is it possible?
Take a look at ‘computer engineering’. It has a large overlap with comp sci (C coding etc.) but focuses on small-scale electrical engineering (i.e. circuitry rather than large-scale power systems)
Which would you say would be better for the ethical hacking field? Beautifully written, by the way. Thank you!
Difficult question! Computer science will probably teach you more crypto/math, which is fundamental to computer security. That said, most attacks (ethical or otherwise) take place at a much higher level, e.g. SQL injections. I think either would be fine, but definitely supplemented with an external ethical hacking course if your university doesn’t offer a comprehensive security major.
Thank you so much! Oklahoma (my home state) doesn’t offer much in the tech field, so I intended on grabbing a few certificates while I was doing my university studies. Any suggestions for online certification programs? Currently I’m looking into EC-Council and UDEMY. Thank you again, you have no idea how helpful you’ve been!
Sir i am confused between computer science and software engineering. I am about to give my entrance for engineering this year although I am confused in which fields I should try for. I am good at programming in c++ and Java and also at graphics designing and am interested in computer science and software engineering both, but in today’s world we just dont have to look what interests us but also what is in demand and fetch some good salary. So, sir can you please tell me which field is in great demand and has opportunities and also fetches some good pay… please sir be soon enough in replying..
Both degrees can be used as a pathway to working as a software developer/engineer, which is in high demand and generally well-paid.
Hi David,
I really appreciated you taking your time out and writing a fully in depth review. I am 16 years old in High School as a Junior. I plan on enrolling in a technical school provided by the school in the next couple of months. The program i will enroll in will be Computer Systems & Information Technology. I wanted to ask that will it help me in the future for becoming a Software Developer? Or will it help me for a different field? Like you said it’s better to start learning early because it will help in the long run. By reading your review on both degree’s I am more interested in a Majoring in Software Developing rather than Computer Science. Thank you David.
I am doing computer engineering. I am taught digital logic designs, micro controller, circuit analysis, calculus, computer organization signal and system (prove worse for me) , digital signals ( again not working for me). I love programming in C++ and java. I also like web development very much, i also do like computer graphics and wants to develop 3D games. I have more interest in programming and i am thinking to drop my computer engineering course (my 3 years ) and get admission in software engineering because it is more close to programming. What you say??? what should i do??? i am just frustrated i don’t like DSP, micro controllers. and i know my parents will me mad at me… … :'( …..
Don’t worry about what your parents think too much; they’re not the ones who are going to be responsible for your career progression and bill-paying for the majority of your life
If you are near the beginning of your degree, I would suggest changing. It’s important to pursue your interests, and if you’ve identified this is more software than hardware-oriented, then enrolling in BEng(Software) sounds sensible. If you’re 2+ years into a ~4 year degree, I’d think more strongly about sticking to BEng(Computer) and later pursuing a Masters degree in SE. I promise you that prospective employers will value the additional experience!
Hi David,
This website was very insightful and I thank you for that. I am planning to do a Masters in Software engineering. I was researching on this topic and I found your website. I am still in a fix whether SE is a right course for me.
I have finished my under graduation in Electronics and Communication. I am currently working in IT field( IBM India) for past one year. I am interested in programming, application development, mobile applications. Doing new / creative things which is my passion.
Even though I like Math in general, I have a phobia towards concepts like Calculus, integral, differentials(May be I didn’t learn it the right way). My concern here is whether my career in Software engineer will require a good foundation in these concepts ? I am in a hope that, programming doesn’t need these concepts. Some universities in their eligibility requirements ask these math concepts as one of their additional requirements(University of Michigan, Dearborn).
Also, what will be my career options if I pursue this course? like a career in embedded systems? Mobile app developer? what kind of software developer I will become ?
Can you please share your thoughts on these topics. I will be much obliged if you do.
I am glad that you have found my website to be useful! To answer your questions:
– Software engineering, in my experience, doesn’t require a strong understanding of calculus. Particular applications certainly might (e.g. if you wanted to develop an ODE-based model of a particular system), but in general, it is more important to understand discrete mathematics (graph theory, recurrence relations for deriving algorithmic complexity, etc.)
– I know very little about career opportunities in India specifically, but in general, there is very high demand for software engineers across all major sectors. Certainly for things like mobile app development etc., although ‘lower-level’ projects like embedded systems development might be better suited to someone with a computer science or computer/electrical/electronics engineering background
Hey David I see you reply a lot on here so I thought I’d give it a go. I am applying to University (UK) and I know this question gets asked a lot but I just can’t bring myself to choose between Software Engineering and Computer Science. I see Computer Science as a more theory, algorithms, and mechanics, mathsy degree where as I see Software Engineering as design/architecture, process, and quality, and a more piratical degree which I really prefer as I I’m not that interested in the more theoretical and maths parts of CS but my elitism keeps kicking in making me think that employers want a CS degree more.
So I was wondering if I am hitting the nail on the head when considering each degree and also could give me some pointers on which might be best for me?
Here are the different degree’s:
http://www.lancaster.ac.uk/study/undergraduate/courses/software-engineering-bsc-hons-g602/
http://www.lancaster.ac.uk/study/undergraduate/courses/computer-science-bsc-hons-g400/
Click on Modules to see what you learn
Thanks!
If you think you’re more interested in the BEng(Software) degree content, then that’s the degree that you should be enrolling in. I cannot imagine much worse than spending 3-4 years in a degree that didn’t interest me. Besides, there’s more “elitism” in doing very well in a degree you care about than not-so-well in one that you don’t.
Hi!
I’m interested a few different things… I think, ideally, I’d like a job that could lead me to somehow working in the film industry, or with a company that creates new websites and such. Which one would be more ideal for me to major in? From the sounds of it, I see myself going into software engineering.
It depends a lot on the specific university, but if you’re interested in the multimedia side of things, perhaps have a look at IT (potentially with a software engineering/development major)?
Hello, id like to know, by your perspective, which career is better for videogame development?
Id also, like to know if theres that much R&D on videogames, or if theres more Development and Maintenance involved on it.
Im studying Systems Engeneering atm, with a big programming and SE background, but would like to know which is more important for the Game Industry for example.
Thanks
The video game industry requires a broad range of skill sets, so it depends entirely on the nature of the work you’d like to contribute. As a tangential example, if you wanted to develop graphics or music, you wouldn’t be doing a programming degree at all. More pertinently, it depends on whether you’re more interested in (say) developing AI for NPCs (more comp sci-based) or the underlying software architecture (more soft. eng.-based). I remember reading that some of the larger companies hire a lot of physics/optics postdocs for developing physically-realistic game engines, so there is definitely a lot of different pathways into the industry. I am certain that software engineering would be one of them.
Disclaimer: I am not an expert on the video game industry.
How the pictures shell does change if we add the formula (“Programming skills” + “Calculus for programming” = “Programming”?) and (“Calculus for programming”? = True)?
In the way that you’ve described. I would argue that you certainly do not need to be proficient in calculus to be a proficient programmer, though. Arguably, you can be quite a respectable computer scientist and not know a lot of calculus; discrete mathematics, graph theory etc. have more frequent applications.
Yes, you are right, I did not explain what does it mean {… and (“Calculus for programming”? = True)?}. I do not use notion “Calculus” in the sense where: “Calculus is the mathematical study of change” or “Calculus is a part of modern mathematics education”. I use “Calculus”, in the sense, where “more generally, calculus (plural calculi) refers to any method or system of calculation guided by the symbolic manipulation of expressions”. And I do not mean “Calculus” as one of the well-known calculi: propositional calculus, calculus of variations, lambda calculus, and process calculus. The last two of it are the closest meaning to choose from (lambda calculus, and process calculus), but they are more the “calculus about the programming”, then “calculus for programming”, which does not exist, unless you call it Calculus “Executable Pictograms”, which I invented. And I had an intention to say that “programming skills”, in the above pictures, should be replaced with the “Programming”, consider it as a non-existing discipline by itself, which deserve to be created (Computer Science, Programming, Software Engineering).
I see what you mean, now. Great point!
Is Software engineering a dead end job
Absolutely not, and I hope that wasn’t inferred from my article. In fact, if you look up lists of “Top X jobs”, you’ll typically find Software Engineering taking out #1.
I graduated in Virtual University of Pakistan(Karachi) in Computeur Science,B.Sc and I also had Circuit Theory course and Digital Logic and Design and Computer Architecture and Assembly Language .
The most ,I liked was Circuit Theory in which they taught me about all the circuits and Ammeter and Voltameter and diodes,capacitors and resistors.
And,in Digital Logic and Design they taught me Multiplexers and Flip flops and Timing chart and these two subjects I keep seperate for further use by electrical engineers and electronics engineers.
David ,I think software engineering solely depends upon the list of softwares that you have in mind from the places where you are such as banks ,super markets,grocery stores and airlines that if you try to grasp something from their softwares unless they use a website for making airline reservations then that’ll be a different story otherwise what you may wanna do is to make yourself a caller for these softwares and remain in touch with these public places such as banks and airlines and until you’re able to get in touch with comapnies in Japan or elsewhere then that’s when you reach the top and look down for the remaining students that are software engineers because they would never be able to keep up with you if you’re a computer science majeur,so what I do is that I always manage my oragnised ethics and code of ethics and when i get home i convert them into code of conduct for the software engineers worldwide or at least the ones I know who are my callers.
Computer science when comes on supporting software engineers becomes fantastic because afterall software engineers are depending on the support of computer science and I personally studied software engineering courses which includes requirements engineering lessons in my computer science degree so I am kind of hanging between computer science and software engineering even though my degree says computer science but I was taught here was to be a software engineer and have been introduced to a company in East Sussex in Great Britain as an applications engineer whereas the name of the company itself is allpications engineering limited http://www.appeng.co.uk.
So,I am like a Software engineer whereever I go and companies do understand this fact that this student when sent out of campus was meant to be a software engineer having a computer science degree with all his concentration on software engineering which also includes data structures and computations and alogrithmic equations for which I’ve bought some good scientific calculators including online calculators because of some good listeners sitting in companies in thousand oaks,California and san jose,california .
Because ,these companies go for the nature of the software engineer regardless of the fact that whatever degree he/she possess like a computer science because all they need is work and proper work by a graduate in science majeur.
So,I’m kind of possessing both qualities of a compuetr science grad first and within this as a software engineer because it is as per the lessons we were taught to consider ourselves as software engineers and then proceed with the remaining education as a secondary but stay on top of software engineering as software engineers no matter what your degree says as computer science or whatever.
Is it possible to do Master of Computer Science after doing Bachelor of Information Technology?
This probably depends on the university, but for the most part, yes.
Very nice write up! (Wish I had come across this during my HSC year [2011]) I’ve researched a lot into computing degrees from multiple universities around Australia, mainly NSW and Melbourne, and can definitely say this is an accurate depiction of where all of these degrees currently lie.
I’m in my Third Year of IT at UTS (http://handbook.uts.edu.au/courses/c10143.html#F17 which was meant to be a three year degree, but I failed one Business Info Sys core last semester (due to the pure garbage that doesn’t need to be taught – [it was legit a subject on how to read articles and discuss them – I wanted to do CE/CS so badly then!] and have kind of come to a breaking point crossroad).
I’ve been more interested in touching the low-level hardware of things since I was about 14 (I would look at my PS3 and would want to know all of the low-level intricate details inside that makes it tick, so maybe I could one day design the hardware for the next upcoming console or GPUs). Many times I think I should have done a CE degree (or transferred), but there are many ongoing external factors/pressures which ended pushing (and keeping) me towards an IT degree. (I.e. Australian job prospects for CE-related jobs is incredibly low/next to 0 [but I wouldn’t mind moving overseas now, if it means I could secure a job at a hardware design company i.e. Intel, AMD, Nvidia, Sony], two 6-month industry placements offered, 45.5k scholarship degree fast-tracked over three years, my High School teacher encouraged us to apply and it looked like a good program by glimpsing over the core subjects and industry exp., also, being in second Semester, First Year, we’re already working so it made it even harder to consider to change when you’ve made so many human relationships/commitments already, and my maths skill set is limited (I haven’t practiced it since High School [Mathematics 2 unit] three years ago, but I did enjoy Calculus), I did no Physics either in school (The High School wouldn’t let me do it as a) my Science ranking was in the top 60s, and I needed to be in the top 40s and b) The Subject Coordinator said we didn’t need Physics for computing, and c) Physics was on at the same time as VET: IT [I did all three IPT, SDD, VET:IT Computing subjects in High School]), but like reading up on its applications).
My IT degree (http://handbook.uts.edu.au/directory/stm90668.html) contains 7 cores which were introductory technical subjects which I said would be okay when glimpsing over it (Intro to HTML/CSS, Linux, Networking, Java, Object-Oriented Design, SQL, but from what I’ve been through with my 7 other info sys cores, the experience hasn’t been all that thought provoking, the Info Sys subjects are absolutely pointless [In a lot of ways, I guess SENGs would do some Info Sys subjects, but not much – depending on the uni]).
UNSW has really good programs available (http://www.cse.unsw.edu.au/studying-at-unsw/undergraduate/program-options/), and they have a lot of hardware-related subjects, i.e. Microprocessors and Interfacing, Operating Systems, Computer Architecture, I’m not sure if I should head onto Postgraduate studies up to MIT (via Grad Cert/Dip which is accumulated to MIT). http://www.cse.unsw.edu.au/studying-at-unsw/postgraduate-coursework/master-information-technology/course-list/index.html (which has the same COMP subjects as undergrad Comp Sci/CE/SENG, minus the core maths/Physics subjects…do you know why the postgrad MIT degree contains no maths or physics, when the undergrad CE/CompSci/SENG degrees do…? Should I transfer to undergrad while I can? (I’ve never really considered myself being that great at maths, but I do appreciate it, same goes with Physics, and there are bridging courses available for $380 ea. subject.
Should I finish my Bachelors and go the Postgrad route (2 year course for MIT) or should I change to CE ASAP?! (4 year course and Bachelor credits will be non-existent/non-transferrable (Networking, I find pretty interesting, because it’s probably the closest area IT has to hardware). I’ve come to the point where I don’t even care if I fail my IT degree or not, that’s how disinterested I’ve become in my spare time with it. I read up on a lot of science and Engineering online articles. (I’ve been on two six-month industry placements working in the IT sector, but nothing low-level, although I have met embedded hardware guys at a company and my eyes just lit up )
Sorry for the long rant, I just needed to ask someone and I thought you’d be perfect to answer it since you’ve done CS/CE. Would a CS option be better since it touches some hardware stuff and the course is 1/3rd electives at UNSW any ways? Thanks! I look forward to your reply.
I’m sick of pretending to be 100% happy/follow the crowd, when I know for a fact I could be doing so much more with what I ACTUALLY WANT TO see myself doing in the future. +1
Short answer to a long question: If you’re already 75% of the way to completing your BIT, and transferring to BCS would see this three years count for zero, then finish the BIT. There are plenty of universities (e.g., UniMelb) that offer CS as a 2 year coursework Masters. Not only would this pathway take less time from where you’re at now, but a) you’ll have two degrees instead of one (inc. one at postgraduate level), and b) it will offer a direct path into a Ph.D if this is your interest (you need either a Masters or Honours).
Woah, thanks for the prompt reply! Appreciate it. Yeah, I guess so. I’ve just become so demotivated to finish IT, mainly because of this very reason of not learning anything low-level/how things actually work. I hate the business/project management side, I don’t even want to go into that field, so why the hell should I be studying it atm?!
The naming conventions for Postgrad degrees are weird in NSW. USyd and UNSW name their postgrad degrees with GratCert/GradDip/Master of IT, but UNSW can purely contain Comp Sci/CompEng subjects. (but it doesn’t cover all of the subjects taught at undergrad level). I live in Sydney, so looking for at UNSW atm.
CE undergrad: http://www.handbook.unsw.edu.au/undergraduate/plans/2015/COMPBH3707.html
MIT postgrad: http://www.handbook.unsw.edu.au/postgraduate/programs/2015/8543.html
Here’s a map outline of all of the choices you can do for MIT/GradDip/GradCert http://www.cse.unsw.edu.au/opencms/export/sites/cse/studying-at-unsw/postgraduate-coursework/downloads/PGRDrequisites.pdf
I want to do Microprocessors & Interfacing > Digital Circuits & Systems > Computer Architecture
Also Operating Systems, Data Structures & Algorithms.
I guess it’s best to just finish off BIT for some recognition in case things just go all south from here on out, I’ve come this far. Can students apply to study for another Bachelors? E.g. CE? Would UAC enter me in as a mature aged student? Thanks!
Some universities (e.g. Newcatle) adopt a model where there are many, many specialised undergrad degrees (BCS, BCE, BSE, etc). Others adopt the ‘Melbourne model’ (I’m not sure if anyone outside of UniMelb actually calls it that…) and only have a small number (~5) of general undergrads followed by specialised coursework Masters.
If you’re already close to finishing BIT but are passionate about CS/CE, I would strongly suggest finishing and then applying for an MCS/MSci(CS)/etc. at one of the latter institutes. It may not be supported by the university you had in mind, but it’s worth stepping outside of your geographic comfort zone (like I did for my Ph.D) for the sake of having a Masters degree versus a second Bachelors degree (and in 2 years instead of 3-4).
Wow, that really cleared away the fog. I just met with a university recruiter who didn’t give as clear of an explanation. Thanks.
Got some idea. But still confused! But this is helpful…
m really puzzled ryt now about chosing CS or SE..which is better??..i heard b4 that if a person is doing “bachelor of Cs” then he can later decide whether he want to chose SE or may study extend in CS??Is it true….? and i want to be SE engineer then i y shouldnt i directly chose SE rather doin Bachelor of comp science?
It depends a lot on the university. At Newcastle, BCS and BSE were two separate degrees. Certainly, if you know from the outset that you want to work as a software engineer, it makes perfect sense to enrol in a software engineering degree!
can a person take up software engineering for their masters after studying computer science at undergraduate level?
In general, yes; that being said, make sure you check the requirements for your particular choice of university.
Software engineering is the study and application of engineering to the design, development, and maintenance of software. Computer Science covers the core concepts and technologies involved with how to make a computer do something.
Computer Science is not about computers; it’s a highly abstracted study of problem solving.
Perhaps ideally, but as a recent computer science graduate, I can certainly testify that there was a -lot- of focus on the fundamentals of physical computers (memory management, operating systems, basic circuit theory, …) and practical implementation of algorithms as software. Yes, “computer science” as an area of study pre-dates the modern computer, but the field has evolved considerably since the days of Turing.
You discussed the differences between computer science and software engineering, what about computer engineering? Are computer engineers trained to do the functions of CS and SE? My son is interested in computer engineering and all I have been reading about is that there is a projected unlimited jobs for C. scientists. Can somebody offer a detailed explanations between computer engineering, CS and SE please.
So hopefully I can answer this from experience, because my undergraduate degrees were in CS and computer engineering
If you take a look at the Figure under “What are they really”, you can see where computer engineering (CE) falls along the harware < --> continuum; i.e. CE is more hardware-oriented than CS. You still learn the fundamentals of coding in a CE degree, but it quickly diverges to deal with things like digital logic design (FPGAs etc.), C/assembly programming for microcontrollers and fundamental circuit theory. It’s almost half-way between a CS degree and an electrical engineering degree.
As far as job prospects, there’s a huge demand for graduates from any of these degrees. I guess it depends on whether your son is more interested in making large-scale, end-user software (SE), using programming and mathematics to solve tricky scientific or engineering problems (CS) or really drilling into how computers physically work at the hardware level and writing code that interfaces with that hardware directly (CE).
If he’s not really sure (which I can certainly empathise with), I’d suggest starting in CS. It’s relatively straightforward to transition from CS to either SE or CE, but I imagine the SE < --> CE transition would be far more difficult to make.
I hope this helps. Keep in mind these are all generalisations and personal experience from the Australian university system, and there’s no substitute for looking at the individual subjects offered in each degree at the particular university(ies) you’re interested in!
I am a CS student, as far as i think, i could pass a hard time in learning algorithms, as they are very difficult and creative. I am also experiencing to write codes using procedural and object oriented languages. but CS is more algorithmic study and has a very deep thinking process in creating a real program.
SE is implementation of those programs which is a skill that most of the CS students don’t know about.
CS is the study which gives a sensitive intuition to mind… most of the life is passed in thinking. I may cause a human in psychological problem easily.
SE is more practical that’s why no more thinking is needed and no change for psychological problems.
CS is curved and SE is straight.
If you ponder CS courses you will find more algorithmic stuff in the books.
Algorithmic study is the way the thinking is based. CS degree is harder than SE because of understanding Algorithms. SE degree is harder than CS because of understanding implementation.
There is a vice versa difference. But CS is has more branches to get into.
SE is the branch restricted to analysis testing and debugging and management.
I suggest everybody when choosing any of field don’t hasitate just choose one of them.
Both are excellent degrees.
I Love both
I am a first year CS student. I agree on everything you say, I like to think of computer science compared to software engineering as a chemistry compared to chemical engineering. I think either degree is interchangeable in the job market, but I think computer science goes along better with academia. I think most schools interchange courses between the two degrees because I know for a fact you have to learn about the software lifecycle in computer science, perhaps on a more shallow level than SE, but you still know the general software lifecycle. I think there will a requirement for both in academia and in the job market.
I was lucky enough to have a amazing first year computer science teacher for a year long AP computer science course , a year long C++ course aswell(well i guess he was my second year teacher because I took a year long intro class first). But I did not realize all of the good practice he used in his code when we had ‘lab’ which was every day almost, where we typed everything he typed. I did not realize how good of a teacher he was until recently in hindsight during my first actual college CS class I am taking right now, because it seems like everyone in my class is clueless on good programming practice, they basically try stuff until it works. The projects are terribly designed, they practically shove bad OOP practice down your throat and everyone eats it up besides me. Some department head idiot does this on purpose or something because my teacher does not make these assignments up, I now can see where the software engineers are comming from, AS A CS Student. I blame the people who design the CS courses not the field, they give it a bad look, atleast in my case.
very good description I think both are same.Both are doing code in better way so If u have in u than u be in the top.
It seems to me that CS degree will get you a job, but with no upward mobility. SE seems to allow for management positions and in design rather than just cranking out code. Right now I’m in the crossroads with an associates degree, but I can go either way, but I’m leaning more SE at this time. I might want CS if it really does have more hardware though, as I love the hardware aspects of computers. Could anyone verify and explain hardware interactions between someone going into CS or SE?
I would argue that CS and SE both offer upward mobility, but I appreciate that this is very dependent on the particular degree, university, sector and company, so this observation may very well be true in your scenario. Keep in mind that computer science is a “real science”, and as such there are countless opportunities in the emerging biotech sector and other similar fields.
My alma mater offered a “double degree” (literally two bachelors degrees in 5 years rather than the cumulative 7, due to overlaps in requisite coursework) in CS and computer engineering. As computer engineering is inherently a hardware-related discipline, it may be worth investigating if you have similar options available to you. You would have to look at the subject breakdown for your specific associate degree options to see whether CS is more-or-less hardware-oriented.
While this is an informative article, I strongly suggest each individual student look at the curriculum of their university of choice.
I’m attending the University of West Florida, and while it’s a smaller school, it has a very good Math/CS/Engineering department. I love the school and my decision to attend it.
Upon initial registration, I chose their Software Engineering program. As I started getting into the meat of the curriculum, taking classes like Data Structures and Algorithms and Software Engineering, I found the SE courses to be mindless memorization of trivial facts while the CS courses (Data Structures, Systems and Networks) were really, really hard and intellectually stimulating.
I switched to Computer Science, and after seeing SE courses in action, there’s absolutely no way an SE major from my university would be better prepared than I would for writing software. Three of my close friends switched majors also from SE to CS because the SE curriculum wasn’t challenging enough. We often joke how the SE program is a watered down CS degree with some business courses peppered in, because that’s exactly what it is.
Again, this curriculum could likely vary widely between Universities, but this is my experience. My personal opinion is that if you’re able to do a CS degree (It is a harder degree in most cases), do that. You’ll be better off than the SE major straight out of college. It’s much, much easier to learn the SE process then it is algorithm analysis.
Although I fundamentally agree with the importance of checking the individual curricula at your university of choice, I maintain that “really hard and intellectually stimulating” is a very subjective and individual thing. Some people are more excited by mathematics and all things related (I am one of these people, so I can empathise), and will find (say) learning about correct object-oriented design and the application of established design patterns to be “mindless memorization”. However, it is important to keep in mind that there will also be people who find that latter to be interesting and stimulating by virtue of it having clear and direct applications to improving their coding quality and productivity, and rather find more abstract CS concepts like automata and Turing machines to be the “mindless memorization” without practical usage. Without having looked at your University’s curricula, I dare say this may be what is happening.
I think you are totally correct, I think The person you replied to didn’t see the power of applying this mindless memorization as he calls it in action. I had one good CS teacher in high school who actually used good practice and emphasized its use on us and now I am so glad I saw the light early. My assignments that are made up by the department at my school for first year CS students literally use little to no proper OOP design; for example they don’t draw data distinctions between objects where they should obviously be for ease of use, efficiency, ease of understanding etc. They also will use bad access protection to data. I think if you are a true intellect you will take the lecture material with a grain of salt because sometimes it is poorly thought out at my school atleast.
I think it is lazy snobby academia garbage because they literally told us to override the toString method in Java and to have it print rather than return a string, even I know that is silly with my small amount of Java knowledge.
I think Computer Science is the general base where person can decide later which profession he can be part from. Professional experience and expertise in a field will lead to Hook-up with Industry position in Market.
Never the less, I can see both are same, as most of both tracks are shared specially in University. But, I also think it would be fare to make it under Single Graduation Title which is “Bachelor of Engineering in Computer Science” rather than “BCS OR BES”.
Even though it’s your personal opinion and generalization, you are absolutely right.
I have done extensively research on the subject and your explanation and samples helped me on my decision going for SE instead of CS. Thanks, great article!
Thank you very much i had confused in both of them your advise is better for me thank you
Thank you very much.. Gave me an insight into choosing between the two
superb and suplended description
Short and succinct. Great write-up.