Every single q a i've ever done i always get this question hey what's up i'm joining university soon should i pick computer science or software engineering honestly i never made this video because i thought the answer was too obvious but as i dug into it i found out that there's a lot of misleading information .
Out there that is confusing people for no reason so let's clear all the confusion out once and for all hi guys my name is utsav i'm a software engineer based in seattle washington and this channel is all about helping you excel in your software engineering .
Careers so if you're into that please consider subscribing as usual the reference materials from this video will be in the description below and i have timestamps so feel free to jump to sections that interest you more alright let's get started so our trusted friend wikipedia says that .
Computer science is the study of algorithmic processes computational machines and the computation itself as a discipline computer science spans a wide range of topics from theoretical studies of algorithms computation and information to practical issues of implementing .
Computational algorithms in hardware and software whereas software engineering is a systematic application of engineering approaches to the development of software well okay that was a mouthful but that makes sense if i had to rephrase that and add my two cents to it i'd say computer science helps you understand .
How computers work and software engineering lets you put that knowledge of computers into practical use in order to build software systems okay great we have a definition now let's look at them as college degrees how does a computer science degree differ from software engineering degree .
Ideally both computer science and software engineering will cover the foundational computer science and mathematics knowledge these are programming logic in one or more programming languages data structures and algorithms and basic probability statistics and discrete math and since computer science is a .
Theoretical study of computers and computations a computer science degree will build on that foundational knowledge with advanced topics in the same areas for example advanced algorithms and analysis concurrent programming operating systems linear algebra .
Advanced calculus finite state machines and also other advanced mathematics courses a computer science degree is a great option for you if you love learning things at a very deep academic level it is also a good choice if you plan on getting advanced degrees like masters or phd in .
Specialized areas like operating systems distributed systems data science machine learning so on and so forth a software engineering degree will also cover the same foundational topics but since software engineering is the application side of things a software engineering degree will take .
The foundational knowledge and teach you how to build software systems that are used in the real world for example software development lifecycle software design that includes things like design patterns principles and paradigms software testing scalability distributed systems and web technologies .
A software engineering degree is a great option for you if you want to get a high level overview of engineering practices used in the real world and also if you want to get in the industry right away but notice that i said ideally when i started talking about these two degrees because .
This is the by the book definition of what these degrees should be but as with anything in the real world it's not cut and dry because there isn't a universal standard that regulates what these degrees should be and as a result these degrees can vary quite a lot from university to university and to that end .
Here is a few things that you need to watch out for you need the fundamentals programming logic in at least one language data structures and algorithm if a cs degree or a software engineering degree does not have that run the other way those aren't going to be good for your career as a software engineer or a developer if you plan to .
Do advanced degrees in specialized topics you probably want to go with a cs degree that has courses that cover a lot of theoretical knowledge and mathematical concepts related to the areas that you want to specialize in this sets you up for success when you pursue advanced degrees .
But at the same time if you don't want to pursue advanced degrees you probably don't want too much theory in your undergraduate degree not all software engineering degrees are made the same some lean heavily towards electrical engineering and physics if that's what you want that is cool but .
If you want to stick to software engineering watch out for too many classes in these areas and then there are those degrees that linger around within the computer science and the engineering department but they are neither engineering or computer science they .
Have their own merits but they may not give you enough foundational knowledge or enough knowledge in general to start your career as a software engineer these are degrees like information technology information systems data science etc they're fine as specializations but .
I wouldn't recommend them as full degrees at least not at an undergraduate level okay now that you know a few things to watch out for let me give you some advice on how to go about picking your degree in general see the thing is that you need a bit of both theory .
And practical knowledge here's a real world example say you're building a cloud powered spelling checker like grammarly or something like that a computer scientist would likely think about what is the best way to find if a word is even misspelled and from there what is the most .
Optimal way to find the best match for a suggestion could this be modeled as a graph problem would we find the levenshtein distance between the two words to find the closest suggestion this is very theoretical and mathematical but it could help finding suggestions fast but .
Autocomplete is a part of a larger system like grammarly or microsoft word how would other parts connect to the system would the autocomplete be exposed as an api would it be cloud-based if so what are the latencies and throughput should the dictionary remain in memory how should we design the overall system .
Um what if we want to completely swap out the current version of autocomplete with the new one how would that affect other modules how can we make a system extensible but decoupled at the same time you get the idea so remember our initial definition computer science helps you understand .
How computers work or how computations are done and in software engineering you put that knowledge into practical use in order to build software systems so hopefully this real world example changes your perspective from obsessing about this degree versus that degree and instead thinking about how you can get .
The best out of your four years in college with a good mix of theory and practice and for that here's my advice first do your due diligence look at the curriculum to make sure that at least the fundamental courses are covered second does the degree give you choices .
To pivot on or is it too structured and strict is it too theoretical or too practical ideally you want a good balance between theory and practice three think of a degree as a flexible canvas you should have the option to choose from a wide variety of electives to .
Shape your degree however you want based on your own interest or the job market good programs give you this choice the only thing that should be forced upon you are the fundamentals fourth work closely with your advisor and let them know what your goals are to create a .
Course plan that fits your need and finally reach out to recent graduates who you know that have recently gotten jobs ask them about what classes they took and what helped them in their jobs well hopefully this gives you some idea on how to go about picking a degree but more importantly how to think about your degree not as a .
Computer science versus software engineering debate but as a four year stretch of learning that you want to get the most out of learning is the most important part in this debate if you have sorted that part out arguably you don't even need a degree at all people without degrees have gone on .
To build amazing software well i think i'll start venturing out into philosophy if i continue any further so i'll stop here let me know in the comments below what degree you have computer science software engineering some other degree or no degree at all and i'm also curious to know how you .
Feel about your degree that you chose has it helped you or hindered your career or you feel indifferent about it let me know and that's all for today i hope you found this video useful if you did please like comment and share and while you're here please consider subscribing to this channel for more software .
Engineering content i'll see you in the next one cheers you