Computer Science Vs Software Engineering | How to Pick the Right Major

Computer Science Vs Software Engineering | How to Pick the Right Major

Articles , , , , , , , , , , , , , , , , , 49 Comments

if you're wondering about the difference between computer science and software engineering you may have a few parts to that question like differences in their definition how they differ in terms of undergrad in the classes you take and how they differ in terms of careers and those are the questions I'm going to answer in this video first when it comes to how we define them if you do a search you'll find things along the lines of computer science is very theory based or it's practically a branch of mathematics you'll learn algorithms data structures discrete math theory of computation and how efficiently computers can solve problems programming languages and some other stuff a lot of stereotypical computer science jobs are in research where you might be like working in artificial intelligence and deep learning to design neural networks such that a computer can learn to recognize objects or be a human in a challenging game or you could be working with data security and cryptography so sensitive information remains secure or computer scientists are even needed for quantum algorithms when it comes to quantum computing which is not a huge field yet but is another example then software engineering is where you use many computer science topics such as algorithms data structures sorting methods and so on to build large-scale systems they're the ones who are needed when products like Microsoft Office rolled of warcraft or new antivirus software are going to be made these things can contain millions of lines of code it's not feasible for just one person and you can't have a bunch of programmers just dive in there's more structure to it they have to understand all the requirements for a project plan the lifecycle of the software figure out how to implement everything like it might need to be fast super easy to use etc the thing of who will be using the final product like there will be other engineers or just an average person they have to do testing think about scalability and so on a software engineer has like 90% the same base knowledge as a computer scientist except they aren't really concerned with discovering an even faster method of sorting a list of items they'll use sorting algorithms that have already been discovered likely by a computer scientists to make their code and system work efficiently now these are how you can define both fields but if you look at reality and actual jobs you won't see people divided so neatly it won't be like if you major in computer science you're put into this box of careers an AI cryptography algorithm design and so on where no software engineers can enter and you'll leave that's not at all how it works people in these two disciplines are totally mixed the rules are essentially interchangeable today and most job listings will say something like computer science or equivalent discipline required which usually means something like software or a computer engineering I also said that many computer science jobs are in research for those typically require a masters or PhD and because most people don't do that a majority of computer science majors end up in software engineering jobs most of your friends who graduate in computer science and go off to Google Facebook Apple Amazon etc are technically working in software engineering or software developer roles building those large-scale systems now even though they have different definitions when it comes to the college curriculum they are extremely similar so let's take a quick look here's the computer science curriculum this is the curriculum for my school Cal Poly San Luis Obispo but note everywhere is a little different for now let's just look at these classes in yellow as these are the major classes I'm going to sweep through them first and then go into detail on a few of them afterwards they take these three programming courses that teach a lot of the basics they take discrete math this is more computer hardware focused class systems programming which goes into more detail on the C programming language algorithm design which is very important for a computer scientist and as a math intensive course programming language is one and this professional responsibilities course which is more about system safety code of ethics intellectual property and so on these nine classes I just listed are all taken by software engineers as well so you hear how computer science is more geared towards Theory math algorithms and so on yet software engineers have to take discrete math algorithms and way more even if they don't do as much research work later in their career software engineers simply need all that computer science information still to work on their various projects the remaining four classes are what software engineers are not required to take those being computer architecture operating systems a second programming languages course and theory of computation and of course this is not counting electives if we go to the software engineering curriculum those same nine classes come up like I said which leaves for classes unique to software engineers I'm not counting these weeks these are kind of like another senior project class I'll talk about these all very soon but first if you look at the math classes they take you'll notice it's pretty much the exact same as the one computer scientists take except computer science majors at least at my school are not required to take our calculus 4 or multivariable calculus now let's go back and I'll explain a little more about those classes unique to software engineers but just as an overview the software engineering specific classes are not about learning new sorting techniques or more efficient programming methods or any more math theory or anything like that they're about how to plan out your project work as a team design interfaces based on who be using your project and so on for example let's look at that first class called software engineering that students at my school took their third-year students might start off by learning the types of software such as end user where it's used by people to get work done system software that provides underlying support to end-user software and embedded software that is within hardware devices like robot security systems or cars then you might define people involved with software whether it be end-users testers analysts etc as you can see it can start off with a lot of definitions then you get into more of the software design like prototyping a GUI or a graphical user interface a way for someone to easily interact with software through graphical icons I actually had to do this at my job before we're previous to making the GUI in order to input data into my program for calculation I had to type in an input command and if I hand that code off to someone that might be annoying for them to have to figure out so the GUI instead just had a box for input values here that could easily be typed in then for this class an actual exam question from a previous year when something like a company wants to design an automated system that puts customers into certain categories and automatically send some advertisements based on location age or whatever and the first question was just to define a GUI with file and edit menus that would be easy to use and navigate no coding required though but then you could be asked to write a Java model for certain objects and operations you'd have a class called customer records which would need to be divided into first middle and last name street address and so on you aren't writing elaborate and efficient code to actually make this system at least on this exam question and you're not finding a faster way to organize this list that's a few other classes that computer scientists also take you're kind of planning out how the software development will happen what things need to be taken into account and all of that then another class unique to software engineers is user centered interface design this is a class more geared towards user experience when you make something like software for someone you need to think about who will be using it like children adults students other engineers and so on maybe your code should not be the most efficient if that means it's easier to use for the person it comes down to practicality now my school this class involved pretty much no programming as an example of an assignment you might have to analyze good and bad interaction design as well as usability in some software tool this could be like looking at some calendar and scheduling tool and writing about your experience as a user what changes or additions could be made for a better user experience and so on then you could be assigned to make a storyboard detailing a product idea you come up with so just maybe an app that helps college students with productivity but you wouldn't code it or anything like that in this class you would explain what problem it solves who your target user is possibly provide some rough sketches what the product would look like and more yes this was an actual assignment from this class it's true some of these classes are more on the planning side of things rather than the real coding and development you might want to do but they simulate what a real-world project will be like when you go out into your career this will help you be prepared to work in a team and stay organized when working towards your goal in many companies settings there can be disorganization when creating a large software system causing delays extra costs etc you'll also notice that in computer science classes you often do weekly or bi-weekly labs to get as much hands-on experience to go along with the theory you learn in the class in software engineering classes it's normally quarter or semester long projects that again simulate a real-world setting now in the last few minutes let's briefly go over courses unique to computer science majors the first big one being theory of computation this is of course a theory heavy class that does involve math and proofs this class won't help you write better code but will help you understand how computer science has been thought of as a science the big question in this class is what are the capabilities and limitations of a computer it's a more abstract idea now I've talked about this class before in other videos but want to do an entirely different example to not be repetitive we're about to see one capability of a computer with almost no memory this is something you can expect maybe in your first week but we need a little background first let's say there's an elevator in a building with only two storeys therefore the elevator can be on the first floor or the second floor and also the elevator would have only two buttons go up and go down obviously we don't need to specify which floor now if we're on the first floor and want to go to the second floor we press the UP button if we then want to go back down to the first floor we press the down button then if we're on the first floor and press down well we don't go anywhere we just stay put and if we're on the second floor and press up the same thing happens these things that are circled are the states of the system and these arrows are the transitions if we replace the first and second floor with general names like state a and state B and the transitions with ones and zeros the typical inputs and outputs for these things we have a general finite state machine something with of course a finite amount of states where the machine can change between them based on external inputs they have very limited memory as in they just know which state they are in like first floor or second floor but it can't keep track of like how many times it went up and down I know this is kind of abstract but just stay with me now here's the more interesting question given a random list of ones and zeros could you make one of these state machines to determine if there's let's say an even amount of ones that have appeared well we can have a state called even and one called odd before any numbers come in there are zero ones which is even so that's where you start if a 1 comes in you transition to the odd state if a 0 had come first instead there would still be an even number of ones and if you're in the odd state and another one comes up you transition back to even as there have now been two ones that showed up an even number and of course if the zero shows up while in the odd State nothing happens there either so we start at 0 once an even number if a 1 comes in we change States to odd if a 0 then comes in we stay in place and no matter what happens we will always be in the proper state remember how I said this class is about the capabilities of computers well this hypothetical system with almost no memory is capable of determining whether there's an even or odd amount of ones and as long a list as we give it even have to remember the list but if we want to count how many one showed up we couldn't do that here at least with this setup that's a limitation for this type of a machine and you may be thinking well computers do have memory and lots of it well why don't we take it to another extreme what if we had infinite memory capacity now what our capabilities what about limitations you'll analyze this when you learn about Turing machines an abstract machine that has an infinite memory tape to store data if you accidentally made a program that ran forever could this machine figure that out well this is the example I always use and the answer is no you'll see that proof and more in this class as you can see on a previous syllabus these are just some of the things you'll learn yes it is theory based and abstract but you'll think about computer science in a different way and that's the real big class that computer scientists at my school were the only ones required to take another one though that software engineers don't take is operating systems which is the software that supports the computers functions such as executing various applications and scheduling what tasks to do Microsoft Windows and iOS are operating systems and as you probably know these are constantly updated by engineers fixed for bugs and so on this class is pretty technical which you can see by its description and on a syllabus you see it contains plenty of labs which again is common for computer science classes and that's about it for the differences I'll go over because remember these majors are mostly the same both who learn the basics of programming and will make simple games they'll both learn data structures now to store an array of numbers and sort it quickly both take discrete math and learn proof techniques set theory etc then apply it to your algorithms class to find like the shortest distance from one point to another given distinct routes and when it comes to electives you can take pretty much all the same things if you go into software engineering and want to take that theory of computation class you can then you could take artificial intelligence game design network security and more at the end of it all these majors are like 90 percent identical now something to know is many schools don't offer software engineering as a major the default is just computer science but the good news is since they're so similar what you pick won't have some drastic impact on your future career outlook which is why I really don't feel I even should answer the question which major is better but I'm sure people in the comments their opinion I've said before that I like concrete answers and I wish for this video I could have said here's the definition for computer science and here's the one for software engineering and this is what your life will look like if you pick one over the other but because software engineers can tailor their education towards computer science topics and plenty of computer scientists end up as software engineers I couldn't just make it that simple but I hope this helps you understand what you're getting into and that's where I'm going to end this video before you go if you want more information on the computer science curriculum or even computer engineering and those differences you can find all of those on this channel don't forget to Like and subscribe links to follow me on social media are below and I'll see you all in the next video

49 thoughts on “Computer Science Vs Software Engineering | How to Pick the Right Major

  • Thomas Clarke

    I need A* in a level maths and two other As in a level to do a degree in software engineering😔😣

  • Elania Opusunju

    Great job. Easy to follow and very informative.

  • Toe Si Thu Min

    please tell me,Can computer science major do the software engineer?

  • Kennt Sbu

    very helpful thanks a lot

  • The Blues

    If I am a graduate of computer science, will there be a chance for me to become a software engineer?

  • Jean-Loïc De Jaeger

    Interestingly enough, what you described is not always valid for countries outside of the US.
    For instance, in France there's absolutely no distinction between CS and Software Engineering.
    I guess what we call software major might be an equivalent for CS.

  • Daniel Kaiser

    There wasn't a distinction between computer science and software engineering when I was in university (1988-1993). It was all computer science where writing programs was concerned. People with engineering degrees protested the usage of the term "software engineer" because it required no actual engineering courses. Also, everything had to be programmed pretty much from the ground up with each new program, and running out of memory was a common concern.

  • fghfghgg ffghv

    So basically cs can do the job of a se but not viceversa cs>se

  • Angel Moreta

    My brother has a BSc in computer science and he works as a software engineer for Pinterest

  • todd chavez

    prep major's video are so helpful and well done. you never disappoint. keep up the good work

  • Aryan Naidu

    Wait so if I want to learn programming apps and stuff is computer science ok ?

  • Francis John Conde

    I took Software Engineering but I have courses such as OS and Compiter Architecture… 😉 Anyhow good VS! 🙂

  • Kasper

    U can yolo

  • Jet Miguel Mendoza

    This one is great! Can you make a video about Sound engineer?

  • Alexis Bustos

    I want to go into the virtual reality field but I don’t know exactly what to major in. I tried one on for the first time and I was in awe. I feel like it has inspired me to go into a career that involves VR. I’ve looked into it and see the potential benefits it can have in the future and I really want to be a part of that. The thing is… I loved the graphics and the animation and the ability for the VR headset to make you feel like your actually there. So idk if that involves a CoSci major or a CSE major or more of a design major.. is there any way anyone can help?

  • Chris Reyes

    This sounds too good to be true. Whats the catch?

  • Ahsan Farooq

    I iwant to be a pro in developing real world applications and games.what should i chose computer science or software engineer.

  • StoptheNWOplz

    That's weird, in my SE degree we learned state machines and turning machines, and theory of computation/automata, and some operating systems. We didn't take stuff like AI, ML, or other trendy shit, but we could've if we wanted as an elective.

  • Luke J. / Nexus

    To keep it short, they’re almost the same thing. Anyone job you can get with SE degree you can get with a CS degree. Most schools don’t even offer SE degrees

  • Kathy

    Can you still work as a software engineer with a software engineer majors without having taken coding classes?

  • Moeed Shaikh

    I am just fearing maths in BSCS should i choose BSSE degree or cs one confusion :/

    I am not really into coding but some research based field in CS or Networking .. i think AI would be very demanding in few years..

    So with what degree should i go.. ?

  • Youñg Christie

    Does anyone know step by step to be a Reverse Software Engineer

  • mazda_freak

    how can i find a list of schools in southern California that arent all online schools and wont be really expensive?
    from my understanding, the SLO area is an expensive upper class one?

  • Danid

    my question is: can you graduate as a Software Engineer and then do a Computer Science Master?

  • Khalessi Gemini

    Good to know my school offers computer science with a focus in software engineering it makes sense now

  • Joshua Hardy

    Great overview. At Oregon Tech we take computer architecture and operating systems.

  • Sullivan Xiong

    Thank you for the in-depth elaboration for this, I'm an incoming 2018-2019 freshman Cal Poly SE and now i'm even more excited! Your video really helped me confirm what I really wanted, such a quality video. Keep up the good work!

  • Katie S

    Thank you for the very informative video! I like the examples and visuals you provided.

  • Suzette Mowatt

    Can u do a mechatronics video

  • Dota Scene

    This channel is just too good. High quality content! Keep going!

  • Chase Westlake

    Managing debt and decision making while considering a degree.

  • Filip Kustudic

    Can you make video on electronics?

  • mycreativity2010

    Is Software Engineering (for example offered at Loyola University Chicago) better or Computer science plus Linguistics (offered at University of Illinois At Urbana Champaign) a better choice? I am a very creative person , good at drawing, design etc. I’d like to take computer science related major and study a Business / management related minor or double major. Looking for good suggestions. Thanks.

  • Tripp

    What ever happened to making a video about the statistics major?

  • Neil Dyan

    Quick Question? C. Science or S. Engineer?



  • PhiloZig

    Hello Zach! I have been watching your channel a lot since my freshman year of college (I'm a second-year Materials Engineering Student and planning on switching to electrical engineering) and you have helped me clear up a lot of confusion I had regarding college and what I can do in industry after receiving my degree. I was wondering since you said you worked as a tutor after working as an electrical engineer for a while, what major would you have chosen if you could redo undergrad again?

  • a a

    Can you make a video about industrial engineering curriculum

  • Ryan St. Clair

    Engineering vs polytechnic?

  • Uchenna Ofoegbu

    Do you have any knowledge on biological or medical based subjects or are you just an engineering channel now?

  • Was Dumb

    nice I finally received a comprehensive explanation of the differenc between cs and se

  • Alemajoh Martin

    Please can you make a video on Electro mechanical engineering,I want to pursue a career in in mechatronics and don't if Electro mechanical engineering is a good start.

  • Alemajoh Martin

    Hi major prep I love all your videos.they have opened me up to so many things I didn't know and now I finally know the carrier which is best for me.

  • Junior Basketball

    Answer these five questions please:

    1)Which subfields of EE should I go into to build super advanced quadcopters and humanoid robots?

    2)What degree should I get in EE in order to build super advanced quadcopters and humanoid robots? Should I get a masters or PhD?

    3)Which subfields of CS should I go into to create super advanced AI, neural networks, and algorithms?

    4)What degree should I get in Computer Science in order to create super advanced AI, neural networks, and algorithms? Should I get a masters or PhD?

    5)What subfield of EE is best for building robots that can run, jump, and lift heavy objects?

  • Hoh Brendan

    A really helpful video. Thanks for this and keep it up!

  • Squishy Ng

    Will the classes in a computer engineering major prepare me for a software engineering job or startup?

  • Daniel Perez

    You should do a video about biomedical engineering vs mechatronics engineering or mechatronics engineering vs electrical engineering

  • Daniel Perez

    You should do a video about biomedical engineering vs mechatronics engineering or mechatronics engineering vs electrical engineering

  • Faisalistic

    Finally! You listened to me.Thank you very much! I will be starting college in few months so I needed this.

Leave a Reply

Your email address will not be published. Required fields are marked *