CS Majors build programs better. SE Majors build better programs. The difference is subtle enough that most employers consider the two to be the same. And it is true that either degree can get you to pretty much the same positions. However, much of this is due to the fact that most learning and experience is gained on the job rather than in the classroom. The differences you might notice are that a CS’s code tends to pass more unit tests, while a SE’s code tends to pass more acceptance tests. A CS major is often better at decomposing complex problems and creating solutions to them. A SE major is often better at translating the nuanced demands of a customer into technical requirements and describing features back to customers. Either way, your degree pales in comparison to your personal ambition and character.
Pretty much the only comment that I've read that isn't a SE throwing a fit about his recommendation. Your description is pretty much on point, but to further simply. A good CS graduate should have a firm grasp on the theoretical aspects; A good SE graduate should be able to create a marketable product. He should just pin your comment. [Either degree would give you the tools to learn to do your job].
Computer science has a lot of maths and algorithms, and mostly deals with solving complexity problems of solving algorithms. It doesn't really get into details of building a software or a build flow. Software engineering on the other hand needs computer science fundamentals to solve software related engineering problems. Think of it like any other subject. A chemical engineer can't create a super conducting polymer without knowing the theoretical chemistry behind it, similarly a mechanical engineer can't design a gravity free hinge without knowing the physics behind it. Software engineering needs computer science knowledge.
Confession: reading the comments back and forth here of CS vs SE reminds me so much of Sheldon and Leonard arguing theoretical vs experimental physics :)
Software Engineering is when a customer comes to you with a problem from their business or a previous existing system or an app idea, then you have find all the requirements for the system/software you want to build, the requirements or requirements engineering is where the work is. You will be taking comp sci classes to understand theory side - data structures, algorithm, network etc but also there are SWE classes like software architecture, construction, requirements, human interface design, testing and project management... Computer Science, you gonna do lots of maths, calc 3 and maybe linear algebra. The roles are interchangeable in job roles today but if you want to differentiate I think computer science is more on the computation side of things, hence the emphasis on understanding faster algorithms and good data structures but SWE is taking all those requirements together so you can build a software for the company. eg like the one in walmart when you check out or the one in the dentist office...you see already there lots of places that need software.
Very well explained, I majored in software engineering and i have studied all those concepts data structure, algorithms, object oriented programming...
Hasan, I'm not sure what you mean by Software Engineering being better since you do both. You also do both in Computer Science. You learn about the practices of Software Engineering in Comp Sci like the Agile methodology and the Waterfall methodology. In Computer Science, you also learn Computer Organization and stuff like Assembly and the Von Neumann Architecture/Model. You learn a lot in regards to time and space complexity in Computer Science (Big-O, Big theta, which data structures you should use in particular situations, which sorting algorithms are the most efficient, etc. etc.).
Monsieur Africain I am saying that a software engineering is better than just computer science because in software engineering by default you do computer science but I addition to that do the engineerong side of it as well. You can easily take a minor or elective in computer science course but you can't do the same for engineering hence why I say that in that respect software engineering is better than computer science. I an aware that they learn SOME software engineering concepts but no where near the amount of detail or depth that you go for in software engineering which is only possible through taking a software engineering whereas its still possible to learn a lot of computer science without taking it as a major. That's not to say computer science is bad. Not at all.
Depends on what kind of programming jobs you're doing I guess? Numerous developers earn their money by doing web and/or app programming (market trend perhaps?) and with these jobs, I personally consider us, essentially over glorified framework users and that's okay. One needs to know their own strength and weakness and do what's within one's own ability. Not knowing these hardcore data structure knowledge doesn't mean you can't earn money programming. App developers use iOS SDK or Android SDK. Web developers use frameworks like Ember, Angular, React etc, and that's the beauty of frameworks, you just need to know how to use it, you don't need to know how it works under the hood. Kind of like you just need to know how to use the car's pedals and gear stick, you don't need to know how the engine works internally. We learn about these data structures at university but during our time at the job, we never have to write our own implementation of a Linked List, or a B-tree etc We have NSArray, NSDictionary given by the SDK. Unless you're working for big companies (Google, Facebook, Apple) or companies building really low level stuff (game/graphics programming?), then knowledge of how these data structure works starts to lose its value. It reminds me of high school - we had to learn Chemistry, Physics, Calculus, Applicable Maths in order to qualify for university. Two years of knowledge studying, worrying and freaking out at those subjects and looking back at it, those knowledge became pointless and never used. Sometimes, university's importance is over exaggerated. You put a pile of money on a silver platter and give the money to the university all for them to tell you go home, buy books and learn it yourself, then come do the exams at the end of the semester. That's the reality. You go to lecture theatres, they don't sit down with you one on one and teach you from morning till night. Bulk of your knowledge comes from reading the book, learning by yourself at home. The tutorial classes are for you to hand in homework, again, limited amount of teaching. If you're learning from books anyways, you begin to wonder why you're paying a university in the first place and be subjected to their self inflated importance attitude. Companies hire not only the technical knowledge of a person but the character of a person. If you're an a-hole, no one wants to work with you no matter how good you are. Generally, companies don't care what degree you graduate with (again, unless you're going for big corporations or extremely specialist companies), they only care about what skills you have to help them earn money or solve a problem and whether you're compatible with the rest of the staff. Case in point, I graduated with Multimedia degree (not programming degree), not one company to this day asked to see my university degree or rejected me because I graduated with a non-programming degree. I got the jobs by building my own apps in my own time, showing I have initiative and not by showing how great my degree is. To further prove my point, we had a Ph. D guy who did the same job as me, in the same company. Degree isn't everything. Additionally, from my own observation, a company usually hires when: 1) Someone is leaving the company, they need to fill the role. 2) The company is expanding e.g. too much work, not enough programmers (not often) So from me to the soon to be university programming graduates, the advice is use the right tool for the right job. Adapt to your environment. Not knowing these hardcore data structure knowledge doesn't mean you won't get programming jobs. Truth be told, I couldn't answer the 3 questions linked in the video but that didn't stop me from helping my family paid off a third of the family house mortgage, paid off my own car, helping my brother buy his car (I'm paying for the car monthly), paid off my university debt etc.
Great points you bring up, and all are extremely valid. I wholeheartedly agree with your perspective on universities being incredibly insignificant after graduation. No employer has ever verified my degree, I could've simply put anything and it wouldn't have mattered. As for Software jobs in the silicon valley, a lot of fresh grads are still being interviewed with these algorithm questions. Whether or not they are useful for the job is arguable, depending on which company you work for obviously. Nowadays, we do in fact spam google search with "how to" questions anyways. The goal of this channel is to actually aid students in learning programming without all the unnecessary bs that comes with schools. I hope the new generation doesn't suffer from the traditional nonsense of big lecture halls and fake university prestige.
I just hate theory always excited to do more practical work like solving math problems. So I should try Software Engineering rather than Computer Science!
I got a software engineering degree from oregon institute of technology. I learned everything CS students did. I started the same day as a CS graduate did at my first job. I knew design patterns and he did not. I had a year long junior projects with a group, and a year long senior project where you can make anything you want but MUST have engineering concepts. The CS guy who started when i did started with less pay, and he said my degree was everything he wanted in a degree. When i got into my junior year than i was basically able to choose the language i wanted to. We more focused on maintainable code, and we did data structures in our first year. C/C++, C#, and even JAVA.
Lets Build That App for me I am happy. I also excelled at my job when the CS guy struggled and almost got fired his first year. I have been there for a little more than 3 years now. I made intermediate after 2 years. I don't think you can go wrong with either degree.
Lets Build That App I built an app in Android and now I am learning xcode and swift. I love your videos. They are really good. You are the best as far as I can see. I hope you continue.
I would actually argue the opposite, I am studying SE and I've already landed an internship at a decent sized company. From what I was told, many Comp Sci students simply don't get enough hands-on experience with programming, being unable to implement what they actually have designed. This might not be a problem in the US, but in my country, the popularity of SE is soaring.
The content in both degrees are dependant on your university. At my university, Software Engineering basically consists of computer science classes (algorithms & data structures) with some additional engineering classes. So I am learning both theory and practical knowledge.
It seems to me that Computer science and Software engineering ARE EXACTLY WHAT THEY SAY THEY ARE. Meaning, computer science teaches everything including highly abstract academic stuff that is integral to how computers and software work, where as Software engineering is more geared to practical uses of computers and therefore less likely to tackle highly abstract theoretical subjects. Duh.
I'm in second year of Software Engineering at a middle tier University and I've noticed that we tend to know more about theory compared to comp. Sci. Majors mostly because we do 90% of the same courses. I've also noticed that the code written by the comp. SCI. Majors tends to be inferior to that of the code written by the SWE majos I know...We tend to compare code for assignments often... I'm not saying they're bad, but at my school they prepare us better for when we graduate as we start internships in our first year. This has already been beneficial for me as after doing 6 interviews for jobs I felt under qualified for, received 3 job offers. It is worth noting I only have a grade equivalent to a 3.0... I'm sure eventually comp. sci. Majors will know more theory but they will never know it to a degree we can't catch up... I feel like your information is somewhat out dated except for the interview questions which is stuff we recently learned...
What university really teaches you is ways to solve problems. You hardly encounter the same problems in the industry that you have previously faced in university, but you will know the methods to solve them. Imo, both are great degree, it's really up to the student. The more problems you faced in college (the harder you work), the more comfortable you will be when facing problem in a job.
Which is better computer sci or software engineering be difference which profitable which subject add in both extra sub ms or degree niiit practical study and space study aero space study
My personal take: SE and CS can be SE and CS without an ounce of coding. Key detail is that they are supposed to be SCIENTISTS and ENGINEERS. In the same vein that a Materials Scientist concerned with cement materials and a Civil Engineer don't necessarily have to go hands on or near a construction site. CS discovers new logic, new algorithms, and new setups(even hardware) that better advance Computer technology. From that field comes the concepts of OOP, FP, Sort algorithms, new languages, etc. SEs concern themselves with how to arrange and use the concepts the CSs discover correctly for a given problem. "Correctly" meaning having the right cost time and quality balance.
I’m a senior SWE major and I also had several classes for data structures, algorithms, operating systems, time complexity, programming paradigms, etc. I also had to take up to calc 3, linear algebra and discrete math. Of course, because it is SWE I did take the classes regarding software from a business perspective as well
Both are very useful in order to be successful in this industry and it's very important to understand both, as an engineer friend of mine has said. As a Senior about to graduate with a degree in Software Engineering, we learned both. Computer Science is useful to understand various data structures, sorting/searching algorithms, hardware programming (Assembly *eyeroll*), etc. As well as the core SE topics; OOP, Software Testing, Architecture & Design, Database Structure, etc. In my opinion, mastery of Computer Science is useful, only if you're programming hardware (of course); for companies like Intel, AMD, or Nvidia. It is definitely more difficult, as Brian said. However, the "real-world applications" require knowledge in many areas. So, more advanced methods & topics - which are becoming more popular - lean on these skills. Things like; Cloud Computing, Embedded Systems, The IoT space and much more.
Indeed a lot of good topics and concepts you can find in both Computer Science and SWE. It's a rather confusing topic for students and I want everyone to be able to tackle those hard algorithm problems when they come face to face with interviewers.
I don't know if it is at all colleges/universities, but as a CSE major I did take a class on Algorithms and Data Structures. It went through the same topics that you talked about mergesort, insertion sort, linked lists.. etc. Perhaps since I am majoring in Computer Software Engineering, it has a little wider range than just Software Engineering, but nevertheless. I really enjoyed this video. Thank you!
I'm sure it's different at every school, but at my university the software engineering major is just an emphasis within computer science. It's literally the exact same degree (same math, algorithms, theoretical comp sci, etc.) but the software engineering major had a more restrictive subset of available technical electives. It's so similar that I spent both junior and senior year in the same classes as a friend who didn't major in software engineering, but chose the SE track electives. Just my 2 cents.
Some schools , like Washington State University classify SE as a CS major for their Undergrad program (CSSE). I guess It's a very newer curriculum, but has proper Accreditation.
Regardless of what the degree is called, it should require 1 yr of data structures and algorithms classes, .5 to 1 year of software engineering, 1 yr calculus, .5 yr discrete math, .5 yr linear algebra or .5 yr statistics depending on your interests, and various application specific classes (machine learning, robotics, etc.). If you skim on the math and algorithms, you could have trouble writing efficient programs or solving problems (especially machine learning problems). If you skim on the SE classes, you will waste time and energy trying to manage poorly organized code. As long as the degree meets those requirements and you have good teachers, you should have most of the fundamentals down. If you also take CS Theory it could help you with solving very difficult problems (TSP, etc). If you take more software engineering, it will help you with designing and managing large scale programs.
Well most job posting I've seen say CS or SE degree or equivelant. A lot of others say CS, SE or engineering degree. Even more say CS or related, engineering, math, physics or accounting. I'm pretty sure CS and SE are used interchangeably now. And most programs teach the same thing, with a few exceptions. Supposedly software companies are looking at people with engineering degrees and math degrees over CS degrees.
Btw... software engineering has been around since the age of the first digital computer. The term or idea rather, of "Software Engineering" was coined between the 1950s-1960s, because in order for anything to carry actual software it had to be designed. The idea of what software engineering would in-cooperate and how it would affect the society would then be establish at the first NATO Software Engineering conference in 1968. Just a side note.
Having gone through computer science myself and presently working with software engineering majors and computer science majors in a full stack environment, I would argue the difference is not so subtle. If you gave me a few thousand lines of code written by both majors I could identify the CS major every time. I am not saying SE's don't develop excellent code. The ultimate difference is in how the code is applied. CS Majors write more efficiently, opting for a data structure and algorithms more suited for the given application, tapping into some of the theoretical elements learned in the major. Again, I'm not knocking SE majors just trying to highlight that the fundamentals and theory you learn in CS are always in the back of your mind when developing. SE's get from A to B quickly CS's get from A to B efficiently.
Thank you so this helps a lot Although my personal goal in finding my Currier path is not so much about landing a good job but Finding one that I'm very passionate about. I might change my mind Because I'm only 14 and not as worried about a good salary lol.
We actually studied all the topics you listed under computer science (data structures, algorithms, etc.) in addition to the topics you listed under software engineering in addition to other topics (e.g., databases, computer organization, operating systems, networks, etc.) during my undergrad studies in Computer Engineering. Note: my university offered both computer engineering and computer science programs (under two different departments) but they didn’t offer a software engineering program (although computer engineering majors were required to take a couple of courses on software engineering).
hamza junaid what I am saying is that there is some overlap between the disciplines and what you actually study under each major might differ (at least to a certain degree) from one school to another. So rather than generalizing what CS, CE, and SE study and do, it might be better to look at the curriculum of the major you’re interested in from the school you want to join. IMO the actual content you learn matters more than the label.
Actually colleges are starting from the next month and I have to choose my major but I'm a bit confused btw mechanical and software engineering So I'm doing research on this from 2 months and what I saw that you can become a software engineer after you do Mechanical but there is no other way round , is it correct? What would you recommend? P.S: I'm curious by nature and love to learn new things especially those which I can apply to create things around me and to be very frank I am not passionate about any particular major
hamza junaid I would consider two factors when making my decision: (a) where my passion lies and (b) what the job market demands. If you’re equally passionate about the two majors, then probably you’ll need to look at the job market. So it really boils down to job demand for the two majors and supply of engineers from each major in your area of living (or potential geographical areas that you’d consider moving to after graduation). If job demand significantly exceeds the supply of engineers for a given major, then that’s the major you’ll probably want to go with (assuming you like both majors equally, which is probably not the case for the many people).
Ahmad Ashkanani I live in Pakistan and in my neighbour country India Comp Sci/Software engineering is soaring and they are paying them alot because of the reason that Tech companies have made their headquarters in India and I think that this trend is soon to come in my country also, that's why my seniors and friends of my parents are advising me to go for software (The top University in my city isn't offering Comp Sci)
Question- Are Software Engineers a mix of CE and CS? I've always thought that. You'll learn how to code, how to create, and learn about developing and more.
SE teaches software engineering practices such as how to program in programming languages, software development processes (e.g. Agile, Lean, Waterfall, etc), compilers, etc. CS is focused much more on algorithms and logic. SE *also* does teach algorithms and that's the only similarity between SE and CS. However, SE does not go into algorithms as deep as CS does. In short, SE involves lots of subjects in programming practices, whereas CS is heavily focused on algorithms (for problem solving).
5:34 “Show me your [algorithms] and conceal your [data structures], and I shall continue to be mystified. Show me your [data structures], and I won’t usually need your [algorithms]; they’ll be obvious.” -- Fred Brooks, _The Mythical Man Month_
You also learn the professional capacity in computer science, I think they're relatively similar to be honest. I do find it easier for a CS major(myself) to transition into software engineering whereas software engineering isn't so easy to transfer into computer science. You can apply a lot of CS to SE, but not the other way around which is I think mostly why you recommended CS.
in terms of the sample interview questions, here are my answers (judge my answers plz) 1. Traversing a tree to a value - Is the tree sorted/ordered? if yes, what's the rule of ordering? traversing a tree requires the root node and some temporary nodes to traverse and then go back to the root and use the other branch. 2. a hash map is a data structure that "maps" a key to a value. hash functions are used to determine in what part of a table the key-value pair will be stored. a hashmap resizes itself depends on the implementation; for a hash table, the bucket table is usually implemented as a dynamic array and then all the previous key values are reinserted and rehashed to the newly sized table. 3. the difference between an interface and abstract class - I don't know because I've never encountered a situation where I needed an interface or an abstract class.
ܚܢܘ ܚܢܐ An abstract class is just a class of which there can be no instance. I have heard that people are avoiding the usage of abstract classes more and more, instead using interfaces, which do much the same thing.
Interface is a template for some sort of functionality. You don't use these independently, they are components of something bigger. Abstract classes are templates to extend from.
so the difference between an interface and abstract class is the difference between a struct of function pointers and a struct of function pointers with members?
It's not that the teacher is bad at teaching; it's that the teacher is bad at teaching you. Everyone has a different style of learning and a teacher has their style of teaching. Those two aren't always compatible. Your job as a student has been distilled down to churning through the endless content they give you, either to internalize it or to use it to solve a problem. But your job as a student really should be learning what is needed for you to learn. Subject matter is a big part of this, but so it the manner in which it's presented. I couldn't understand OOP programming (of really, even anything more than simple control flow) until I found the right professor that happen to have just the right teaching style for me. He distilled each concept down into its basic components, used a minimum of boiling plate so all we were focusing on was the topic, then described the entire life cycle. The 'life cycle' was important, because personally I don't work well with a "black box." For instance, he taught us about value vs reference types very earlier on. That's typically considered a more advanced topic, but there's nothing inherently advanced about it, and if we truly want to understand what is happening to an int vs a string and all the way up to a class, the value vs reference is important. His style of teaching made it all "click" for me, and all the pieces just started falling into place. And that's the key. Either the university needs to make you take the same class with 10 different professors and hope you get luck at finding one that teaches in a way that best works with your manner of learning harmoniously, or you need to do this on your own until you learn enough about how you learn to be able to recognize it yourself. Put simply; your job as a student is to learn how to learn.
As someone who completed his CS degree 30yrs ago and has worked as an SE ever since I don't know how you can be an (effective) SE without an understanding of CS. It's the same "false dichotomy" seen in pure vs applied math, if you don't know the theory, how can you apply it?
Tapecutter59 apparently English majors can become software engineers these days, I agree that it's important for software engineers to understand the theory. If you've ever worked with someone who has a non SE/CS/IT degree you will realise how difficult those kind of people are to work with because they think they understand but they don't.
Uhh I dunno how it is over there but in Sweden, "Software engineering" includes a bachelor & major in computer science as well as the civil engineer stamp. They're basically the same thing, or comp sci is a subset of software engineering
A friend of mine graduated from computer science six years ago. after that, I did basic database jobs, but he can't program. He's back to school to learn more programming now
Hahaha straight to the point. I like it! Algorithms and Data Structures is so huge. Eat! Breathe! and Sleep! sorting algorithms! And practice interviewing with your professors, friends and family.
What if you're interesting in programming Video Games? What major would I have to take? CS or CE? Currently, I'm taking CS but I feel like I should switch before it's too late. I'm still a freshmen in college.
Im a SE major and this are my major subject.. 1. Core java 1 2. Core java 2 3. Ent java 1 4. Ent java 2 5. Design Pattern (in java) 6. Functional Programming (scala) 7. Fundamental programming (c++) 8. Data structure and algorithm (c#) 9. Data communication 10. Database 11. Python 12. Mobile computing 1 Android studio 13. Mobile computing 2 IOS development 14. Project management 15. Human and computer Interaction (UX development) 16. Web Programming (HTML, CSS, JAVAScript) 17. Web Programming 2 (PHP)
I'm a computer science major at my school. We do not have a software engineering major. However, you do get to choose a focus on what elective you want to take for your upper division, which includes software engineering. We are also required to take a few classes based off software engineering just to graduate as a computer science major. I feel like this is one of the best options to learn theory and have a good understanding it and then being able to apply it to more real world application.
That's great, whatever major you choose you just want to be prepared when it comes to real world interviews. A lot of my algorithms videos are meant to give you a glimpse into that world.
I think the key difference is that Software engineers don't actually need to code... In fact, many jobs don't need you to. A lot of SE goes to the design and analysis of whole HUGE projects. Kind of a rule of thumb: SE design the system and CS build it.
People here trying to specify the differences, you're basically all wrong. Software engineer pretty much describes what it is. You'll be an engineer (and all generic aspects of being an engineer) of software. Computer science is generally just a broad term applied to anything that doesn't specifically fit software engineer, for better or worse. If you graduate as a software engineer, you'll get a CS degree anyway. Basically, just specifically ask what any course is about, what actual skills you'll be learning and most importantly, to what level. I've seen people graduate with a CS degree because they were able to make a website run.
In CS you also learn infographics, AI, network, security. Engineer will learn more how to maintain good solution on the overall project, do more humain to humain stuff, they will plan the software before the programmer can even touch a line of code
I’m going to school for both game design and software engineering but I need a bachelors in computer science or computer engineering in order for me to get a job in a game industry
No true, C++ has that concept, even if it's an implementation detail, you can make a class purely abstract, meaning that it has to be extended to function. I would bet that Python has a similar concept, Interfaces are a vital part of SD to remove direct dependencies.
I have the option of studying a bachelor in SC, OR a bachelor in SE and after that a master in CS. Maybe doing those 5 years is the most optimal route?
Hashing is a very basic concept. Just gotta know that elements are stored as key value pairs where the key is inputted into some hash function and generates the value
A friend is studying "applied Computer science" which is the literally translation from his degree but is software engineering. However, i study CS in a Technical Institute and sometimes we try to learn together - it is mostly impossible. If you look at the moduls, you can see the difference: Me: 50-60% math of mandatory courses. He: 10-15% math and much much easier one. So yes, there is a big difference in studying one of them. But also finding jobs are more or less different, he cant work at research or development (except software engineering) because of his lack of theory.
I study SE And we have Have Algebra and Analytic Geometry 1, 2 and 3, Discrete math and Mathematical Analysis 1, 2 and 3 as well as Statistics and Probability (those are 2 separate subjects). I Don't think that's little nor easy math...
So they basically made applied computer science it's own major? Makes sense. Some comp sci courses are not very important for a software designer / network administrator and some things important for software design are only glanced over.
Taxtro I know it depends on the person but I'm trying to figure out the differences. Seems the majority are saying the two are the same and I'm a little confused. Maybe I'll just watch a few more videos on it !
It Depends on what kind of Degree you are doing.This video is describing the difference between Degree in Computer Science vs Degree in Software Engineering.But if you study Bachelor of Science Honors Degree in Software Engineering,you get to major in both Software Engineering and Computer Science.
There is not much differences. CS is a higher level one of the two. SE would be less math intensive and more practical. (But also more supply than demand in labor market). My personal opinion, I am an Architect (designing building), I only study CS because people keep thinking that I am an architecture engineer in computer science.
My college doesnt offer Software engineering as a major, instead its just a class CS majors take. From the way i see it, you can pretty much self teach yourself software engineering, but CS is based more in computational theory
I have studied CS both in bachelor and masters. CS has a lot more Math related courses than software engineering. the topics mentioned in video such as alogirthms, time complexity are not really the difference.
Hey, I am a big fun of your channel! so Thanks! for all the videos. Just want to make a quick correction on your general misconception about Software Engineering as Undergrad study. I don’t know if you actually did a research about this topic and actually checked the required courses for undergrad CS and Software Engineering major. Just for my background, I am under grad 3rd year Software Engineering student in Bay area. First, like you mention on beginning of your videos Software Engineering was introduced not long ago as undergrad study. It was mostly considered graduate level study, as matter of fact there are only two Universities in bay area that offer Software Engineering as undergrad (SJSU and Cal Poly undergrad and CMU graduate in their SF campus). All UC Universities, SCU and Stanford University don’t offer Software Engineering degree, so if you want to attend Ivey league you pretty much have to study EECS/CS. When it comes to the course loads, both CS and Software Engineering students have to complete All Object-Oriented programming, Data Structure and Algorithm class - it’s part of core major requirement. The only difference is Software Engineering - we take 4 more class (Software Engineering I, II, Software Test and Q&A) that prepares you more for Enterprise Software development. The other difference depends on Senior years elective courses, which again don’t have much difference because its depends on the student preference. At Senior years we only pick 2 electives for both CS and Software, if students want to specialize on security, the will take more software security classes, if Networking then we will study 1 more networking class… etc By default, most students apply to CS major because that’s the common undergrad degree offered by most universities. The most curtail thing is Not getting the degree its gaining experience with the degree, so please try to do Internship!
Overall I'm still somewhat confused about these two distinctions. Back in the good old days, there was only Computer Science and Electrical Engineering Computer Science.
I think software engineering should be a specialization, not a undergrad. Firstly, Most companies have their way of developing software, so what matters is experience, not much what you learn reading a book (in regards to software development). Second, in SE you take classes that are useless in IT jobs, like chemistry and physics for engineers, but those classes are the one that give you the engineer status lol. A proof that you may learn software development processes without needing an SE degree is that there lots of self taugjt coders that work as sofrware engineers that complain only about not having CS knowledge and how it makes them have a harder time on their jobs, but ive never seen a self taught coder or someone with a CS degree complaining that they dont understand software development processes. And last, saying a SE is more complete than a CS grad, is like saying taking a Medical specialization without going through a normal medical grad is" better" as it focuses more in practical stuff. Doesnt make much sense. SE will give you the engineer status but beyond the fact that it literally makes you practice more coding and that, i see no advantage in taking it over CS. Plus, you can practice coding by yourself on CS, but as that takes the responsiblity factor into consideration, ppl are usually afraid of that lol.
Daniel kifinga in my figure computer engineer is some one who learned how to solve computer problems such us in hardware problem which including repairing and maintainance of computer life but software engineer is some one who learnt how to develop a software and solve a problem of any organization from file system to software environment !!!!!
Video was really informative and everything said was correct, but I would like to add that only with university experience you wont get a job, if you want to land a job you should also have some code written by you that employer could see (your git for example).
Hi! I'm a 1st semester software engineering major with 2nd semester sophomore standing. For this reason, I have the option to potentially graduate early, but I would not mind staying in school for a little longer to get more education. Would you say that it is a good idea to get both minors in Computer Science and Mathematics--along with my major in SE--or just graduate in 3 years and start looking for a job with less experience ? Getting both minors in CS and Mathematics would put me at around 4 years to graduate, with the last semester only being part-time.
Hi Brian, May I ask you a quick question? If you have an APP idea, is it OK to sketch it out on a piece of paper or just build it and figure it out along the way?
Probably want to sketch it out. My thought process behind this is, if you just build it first without planning it out, you might write code for something that you realize you might not want later on or maybe wished you wrote your code a certain way and now have to go back and fix everything. From my experience, sketching it out helps me be way more efficient b/c you have a good idea of what you want
CS student here. I was sure Brian was going to saw Software Engineering because it seemed as though he was leading up to that, in addition to what I've heard from peers about the industry. I have friends with degrees in CS and SE and all of them are doing well. In the end, it's all about the work and time and effort. mfw @5:11 ... nani?
what are your thoughts on bootcamps or learning on full stack javascript on your own? Will it get you a job or is a masters in computer science a better route?
Depends on where you want to work though. Big tech companies like Google/Facebook highly prefer Master/PhD candidates whereas the common job market provides lots of opportunities for experienced Bsc holders.
I’m in my junior year , major is computer science with a focus on software development. Only difference between a regular c.s. Degree at my school and software development is for software development you have to take software engineering II and software testing as two of your three electives
Hey, great video. I just wanted to ask maybe you know great websites/tutorials/ books to practice on algorithms? I had algorithms course in university but I dont think it was enough. Once again thank you for great videos.
Nah, software design is part of applied computer science. So it's more like software design is like measurement techniques and computer science is like physics in general. Each is very useful on it's own without delving into more and less useful theoretical physics / computer science.
Did software engineering and learnt everything that was in the computer science slide and your software engineering slide. That seems to be the norm of most degrees here in Aus
In the real word you rarely write linked lists or sorts. You google and copy code that already works. In the real world you leverage existing code to put it together to solve a business problem efficiently. Your sample questions are fun to make you think and get you an entry-level job because you have no real world experience.
Yep, agreed. These are the gating entry level questions that you have to pass in most companies as interns or junior developers. In the real world I don't think I've implemented a linked list more than maybe 2 times.
Nice, school's job truly just exposes you to things and subjects you may be interested and of course the basics like english grammar and math (the most important subject being religion, catholic teachings in my case for that is eternal and it's related to the moral use of your talents- be it coding, code for good instead of creating malware for example). The internet makes it easy to expound on these subjects that the schools introduced to you. You are very, very blessed if you have a really good teacher, that'll be a shortcut to being an expert in a certain subject- they're usually in a good and expensive schools unfortunately. God bless, Proverbs 31
I study computer engineering. I learn both CS and software engineering, basically. So, I don't know how it goes in other countries, but if you are not sure which to choose, I'd say go for CENG, it has everything in it. (At least in my country)
Please help me to choose...I really your advise.....I like to code...i like Java... I have 4 options: IT degree(web tech related) ~web programming/engineering ~networking IT degree(software development related) ~software engineering ~networking ~project management CS degree(Software Engineering) ~AI ~sw requirement engineering, sw engineering, sw design architecture, sw qa test CS degree(Game developement) ~game development related
Engineering is the application of science. And computer science is about computers like astronomy is about telescopes. Software engineering is not really about software either. And OOP is a fundamental mistake.
Great video! I think you should compare computer science and computer engineer next as they are two different majors but both have their similarities. When I was in high school, I didn't know the different between the two but I saw the word engineer and went for the major. Little did I know that Comp E is a mixture of Electrical Engineering and Computer Science, but I guess thats whats nice bout Comp E is that you can choose which field you want to focus in (hardware or software) later in life. Don't get me wrong, I love Computer Engineering now but I think it'll be informational for those people who wants to major in software development and doesn't know the difference between Comp E and Comp sci.
Ok so I know this is a weird question but I'm about to start college for a degree in Computer Science with a concentration in Software Engineering so which one does that fall under ?
CS Majors build programs better.
SE Majors build better programs.
The difference is subtle enough that most employers consider the two to be the same. And it is true that either degree can get you to pretty much the same positions. However, much of this is due to the fact that most learning and experience is gained on the job rather than in the classroom.
The differences you might notice are that a CS’s code tends to pass more unit tests, while a SE’s code tends to pass more acceptance tests. A CS major is often better at decomposing complex problems and creating solutions to them. A SE major is often better at translating the nuanced demands of a customer into technical requirements and describing features back to customers.
Either way, your degree pales in comparison to your personal ambition and character.
Pretty much the only comment that I've read that isn't a SE throwing a fit about his recommendation. Your description is pretty much on point, but to further simply. A good CS graduate should have a firm grasp on the theoretical aspects; A good SE graduate should be able to create a marketable product. He should just pin your comment. [Either degree would give you the tools to learn to do your job].
Lygodesmia And I am an SE major.
tru
Your comment is GOLD!
Amen.
Computer science has a lot of maths and algorithms, and mostly deals with solving complexity problems of solving algorithms. It doesn't really get into details of building a software or a build flow. Software engineering on the other hand needs computer science fundamentals to solve software related engineering problems. Think of it like any other subject. A chemical engineer can't create a super conducting polymer without knowing the theoretical chemistry behind it, similarly a mechanical engineer can't design a gravity free hinge without knowing the physics behind it. Software engineering needs computer science knowledge.
Nice i like math xd
True 🙂
I guess I’ll just do both then
Confession: reading the comments back and forth here of CS vs SE reminds me so much of Sheldon and Leonard arguing theoretical vs experimental physics :)
Oh my gosh, yes!!
Software Engineering is when a customer comes to you with a problem from their business or a previous existing system or an app idea, then you have find all the requirements for the system/software you want to build, the requirements or requirements engineering is where the work is. You will be taking comp sci classes to understand theory side - data structures, algorithm, network etc but also there are SWE classes like software architecture, construction, requirements, human interface design, testing and project management... Computer Science, you gonna do lots of maths, calc 3 and maybe linear algebra. The roles are interchangeable in job roles today but if you want to differentiate I think computer science is more on the computation side of things, hence the emphasis on understanding faster algorithms and good data structures but SWE is taking all those requirements together so you can build a software for the company. eg like the one in walmart when you check out or the one in the dentist office...you see already there lots of places that need software.
Very well explained, I majored in software engineering and i have studied all those concepts data structure, algorithms, object oriented programming...
I think software engineering is better since you are doing both...... An software engineer can be a programmer. But a programmer can't be an engineer.
Hasan, I'm not sure what you mean by Software Engineering being better since you do both. You also do both in Computer Science. You learn about the practices of Software Engineering in Comp Sci like the Agile methodology and the Waterfall methodology. In Computer Science, you also learn Computer Organization and stuff like Assembly and the Von Neumann Architecture/Model. You learn a lot in regards to time and space complexity in Computer Science (Big-O, Big theta, which data structures you should use in particular situations, which sorting algorithms are the most efficient, etc. etc.).
Monsieur Africain I am saying that a software engineering is better than just computer science because in software engineering by default you do computer science but I addition to that do the engineerong side of it as well. You can easily take a minor or elective in computer science course but you can't do the same for engineering hence why I say that in that respect software engineering is better than computer science.
I an aware that they learn SOME software engineering concepts but no where near the amount of detail or depth that you go for in software engineering which is only possible through taking a software engineering whereas its still possible to learn a lot of computer science without taking it as a major. That's not to say computer science is bad. Not at all.
you dont know jack shit DONT TALK BTICH
Depends on what kind of programming jobs you're doing I guess?
Numerous developers earn their money by doing web and/or app programming (market trend perhaps?) and with these jobs, I personally consider us, essentially over glorified framework users and that's okay. One needs to know their own strength and weakness and do what's within one's own ability. Not knowing these hardcore data structure knowledge doesn't mean you can't earn money programming.
App developers use iOS SDK or Android SDK. Web developers use frameworks like Ember, Angular, React etc, and that's the beauty of frameworks, you just need to know how to use it, you don't need to know how it works under the hood. Kind of like you just need to know how to use the car's pedals and gear stick, you don't need to know how the engine works internally.
We learn about these data structures at university but during our time at the job, we never have to write our own implementation of a Linked List, or a B-tree etc We have NSArray, NSDictionary given by the SDK.
Unless you're working for big companies (Google, Facebook, Apple) or companies building really low level stuff (game/graphics programming?), then knowledge of how these data structure works starts to lose its value.
It reminds me of high school - we had to learn Chemistry, Physics, Calculus, Applicable Maths in order to qualify for university. Two years of knowledge studying, worrying and freaking out at those subjects and looking back at it, those knowledge became pointless and never used.
Sometimes, university's importance is over exaggerated. You put a pile of money on a silver platter and give the money to the university all for them to tell you go home, buy books and learn it yourself, then come do the exams at the end of the semester. That's the reality. You go to lecture theatres, they don't sit down with you one on one and teach you from morning till night. Bulk of your knowledge comes from reading the book, learning by yourself at home. The tutorial classes are for you to hand in homework, again, limited amount of teaching. If you're learning from books anyways, you begin to wonder why you're paying a university in the first place and be subjected to their self inflated importance attitude.
Companies hire not only the technical knowledge of a person but the character of a person. If you're an a-hole, no one wants to work with you no matter how good you are.
Generally, companies don't care what degree you graduate with (again, unless you're going for big corporations or extremely specialist companies), they only care about what skills you have to help them earn money or solve a problem and whether you're compatible with the rest of the staff. Case in point, I graduated with Multimedia degree (not programming degree), not one company to this day asked to see my university degree or rejected me because I graduated with a non-programming degree. I got the jobs by building my own apps in my own time, showing I have initiative and not by showing how great my degree is. To further prove my point, we had a Ph. D guy who did the same job as me, in the same company. Degree isn't everything.
Additionally, from my own observation, a company usually hires when:
1) Someone is leaving the company, they need to fill the role.
2) The company is expanding e.g. too much work, not enough programmers (not often)
So from me to the soon to be university programming graduates, the advice is use the right tool for the right job. Adapt to your environment.
Not knowing these hardcore data structure knowledge doesn't mean you won't get programming jobs. Truth be told, I couldn't answer the 3 questions linked in the video but that didn't stop me from helping my family paid off a third of the family house mortgage, paid off my own car, helping my brother buy his car (I'm paying for the car monthly), paid off my university debt etc.
Great points you bring up, and all are extremely valid. I wholeheartedly agree with your perspective on universities being incredibly insignificant after graduation. No employer has ever verified my degree, I could've simply put anything and it wouldn't have mattered.
As for Software jobs in the silicon valley, a lot of fresh grads are still being interviewed with these algorithm questions. Whether or not they are useful for the job is arguable, depending on which company you work for obviously. Nowadays, we do in fact spam google search with "how to" questions anyways.
The goal of this channel is to actually aid students in learning programming without all the unnecessary bs that comes with schools. I hope the new generation doesn't suffer from the traditional nonsense of big lecture halls and fake university prestige.
Make a video on
software engineering vs
computer science vs
computer engineering vs
Information technology
You don't understand how useful this video was for me. Thank you for explaining them and helping me target the specific major!
Glad you found this useful
Same here, very useful
I just hate theory always excited to do more practical work like solving math problems. So I should try Software Engineering rather than Computer Science!
I got a software engineering degree from oregon institute of technology. I learned everything CS students did. I started the same day as a CS graduate did at my first job. I knew design patterns and he did not. I had a year long junior projects with a group, and a year long senior project where you can make anything you want but MUST have engineering concepts. The CS guy who started when i did started with less pay, and he said my degree was everything he wanted in a degree. When i got into my junior year than i was basically able to choose the language i wanted to. We more focused on maintainable code, and we did data structures in our first year. C/C++, C#, and even JAVA.
Sounds like you made the right choice
Lets Build That App for me I am happy. I also excelled at my job when the CS guy struggled and almost got fired his first year. I have been there for a little more than 3 years now. I made intermediate after 2 years. I don't think you can go wrong with either degree.
Lets Build That App I built an app in Android and now I am learning xcode and swift. I love your videos. They are really good. You are the best as far as I can see. I hope you continue.
KineticUncertainty bau.edu.tr/icerik/3956-software-engineering-undergraduate-students
Is this software engineering program good? I will take it in sep
I would actually argue the opposite, I am studying SE and I've already landed an internship at a decent sized company. From what I was told, many Comp Sci students simply don't get enough hands-on experience with programming, being unable to implement what they actually have designed. This might not be a problem in the US, but in my country, the popularity of SE is soaring.
Software Engineering at my University was just an extra year where you focus on developing a SDLC project.
I go for computer science with a software engineering specialization it ties both together pretty well
Destinee Grove what is a specialization? I imagine like a secondary course.
Blur basically it’s a concentration so I take classes in computer science as well as software engineering could think of it as a minor
Destinee Grove ahh thanks for answering
I'm going for the same thing Computer Science with a concentration in Software Engineering
Is this necessary? Does this give u more jobs opportunities?
The content in both degrees are dependant on your university. At my university, Software Engineering basically consists of computer science classes (algorithms & data structures) with some additional engineering classes. So I am learning both theory and practical knowledge.
It seems to me that Computer science and Software engineering ARE EXACTLY WHAT THEY SAY THEY ARE.
Meaning, computer science teaches everything including highly abstract academic stuff that is integral to how computers and software work, where as Software engineering is more geared to practical uses of computers and therefore less likely to tackle highly abstract theoretical subjects.
Duh.
You’d be surprised how many times this question is asked on this channel though
I'm in second year of Software Engineering at a middle tier University and I've noticed that we tend to know more about theory compared to comp. Sci. Majors mostly because we do 90% of the same courses. I've also noticed that the code written by the comp. SCI. Majors tends to be inferior to that of the code written by the SWE majos I know...We tend to compare code for assignments often... I'm not saying they're bad, but at my school they prepare us better for when we graduate as we start internships in our first year. This has already been beneficial for me as after doing 6 interviews for jobs I felt under qualified for, received 3 job offers. It is worth noting I only have a grade equivalent to a 3.0... I'm sure eventually comp. sci. Majors will know more theory but they will never know it to a degree we can't catch up... I feel like your information is somewhat out dated except for the interview questions which is stuff we recently learned...
What university really teaches you is ways to solve problems. You hardly encounter the same problems in the industry that you have previously faced in university, but you will know the methods to solve them. Imo, both are great degree, it's really up to the student. The more problems you faced in college (the harder you work), the more comfortable you will be when facing problem in a job.
Algorithms and data structures are taught in software engineering too
ML in CS > SE
Which is better computer sci or software engineering be difference which profitable which subject add in both extra sub ms or degree niiit practical study and space study aero space study
My personal take:
SE and CS can be SE and CS without an ounce of coding.
Key detail is that they are supposed to be SCIENTISTS and ENGINEERS. In the same vein that a Materials Scientist concerned with cement materials and a Civil Engineer don't necessarily have to go hands on or near a construction site.
CS discovers new logic, new algorithms, and new setups(even hardware) that better advance Computer technology. From that field comes the concepts of OOP, FP, Sort algorithms, new languages, etc.
SEs concern themselves with how to arrange and use the concepts the CSs discover correctly for a given problem. "Correctly" meaning having the right cost time and quality balance.
I’m a senior SWE major and I also had several classes for data structures, algorithms, operating systems, time complexity, programming paradigms, etc. I also had to take up to calc 3, linear algebra and discrete math. Of course, because it is SWE I did take the classes regarding software from a business perspective as well
Both are very useful in order to be successful in this industry and it's very important to understand both, as an engineer friend of mine has said. As a Senior about to graduate with a degree in Software Engineering, we learned both. Computer Science is useful to understand various data structures, sorting/searching algorithms, hardware programming (Assembly *eyeroll*), etc. As well as the core SE topics; OOP, Software Testing, Architecture & Design, Database Structure, etc.
In my opinion, mastery of Computer Science is useful, only if you're programming hardware (of course); for companies like Intel, AMD, or Nvidia. It is definitely more difficult, as Brian said. However, the "real-world applications" require knowledge in many areas. So, more advanced methods & topics - which are becoming more popular - lean on these skills. Things like; Cloud Computing, Embedded Systems, The IoT space and much more.
Indeed a lot of good topics and concepts you can find in both Computer Science and SWE. It's a rather confusing topic for students and I want everyone to be able to tackle those hard algorithm problems when they come face to face with interviewers.
I fucking hate Assembly
Comment section:
1% great video.
99% CS is actually...
If time permitted, I would spend 3 solid years of Computer science and lots of data structures for real world problems.
myVictor lee Time has permitted.. go do it.
I don't know if it is at all colleges/universities, but as a CSE major I did take a class on Algorithms and Data Structures. It went through the same topics that you talked about mergesort, insertion sort, linked lists.. etc. Perhaps since I am majoring in Computer Software Engineering, it has a little wider range than just Software Engineering, but nevertheless.
I really enjoyed this video. Thank you!
I'm sure it's different at every school, but at my university the software engineering major is just an emphasis within computer science. It's literally the exact same degree (same math, algorithms, theoretical comp sci, etc.) but the software engineering major had a more restrictive subset of available technical electives. It's so similar that I spent both junior and senior year in the same classes as a friend who didn't major in software engineering, but chose the SE track electives. Just my 2 cents.
Awesome video. The internet needs more clear answers to pressing questions like this. Thank you!
Some schools , like Washington State University classify SE as a CS major for their Undergrad program (CSSE). I guess It's a very newer curriculum, but has proper Accreditation.
Regardless of what the degree is called, it should require 1 yr of data structures and algorithms classes, .5 to 1 year of software engineering, 1 yr calculus, .5 yr discrete math, .5 yr linear algebra or .5 yr statistics depending on your interests, and various application specific classes (machine learning, robotics, etc.). If you skim on the math and algorithms, you could have trouble writing efficient programs or solving problems (especially machine learning problems). If you skim on the SE classes, you will waste time and energy trying to manage poorly organized code.
As long as the degree meets those requirements and you have good teachers, you should have most of the fundamentals down. If you also take CS Theory it could help you with solving very difficult problems (TSP, etc). If you take more software engineering, it will help you with designing and managing large scale programs.
I really needed to hear this. Thank you for making this video.
Well most job posting I've seen say CS or SE degree or equivelant. A lot of others say CS, SE or engineering degree. Even more say CS or related, engineering, math, physics or accounting. I'm pretty sure CS and SE are used interchangeably now. And most programs teach the same thing, with a few exceptions. Supposedly software companies are looking at people with engineering degrees and math degrees over CS degrees.
Thanks for the advice I wasn’t completely convinced on what major I was going for but now I’m confident on going for computer science
Great video! Thanks for your perspective.
Btw... software engineering has been around since the age of the first digital computer. The term or idea rather, of "Software Engineering" was coined between the 1950s-1960s, because in order for anything to carry actual software it had to be designed. The idea of what software engineering would in-cooperate and how it would affect the society would then be establish at the first NATO Software Engineering conference in 1968. Just a side note.
+The One good to know, it’s hard to do research on this topic since I went to school and only had computer science and engineering as majors
Having gone through computer science myself and presently working with software engineering majors and computer science majors in a full stack environment, I would argue the difference is not so subtle. If you gave me a few thousand lines of code written by both majors I could identify the CS major every time. I am not saying SE's don't develop excellent code. The ultimate difference is in how the code is applied. CS Majors write more efficiently, opting for a data structure and algorithms more suited for the given application, tapping into some of the theoretical elements learned in the major. Again, I'm not knocking SE majors just trying to highlight that the fundamentals and theory you learn in CS are always in the back of your mind when developing.
SE's get from A to B quickly
CS's get from A to B efficiently.
...but software engineers are also required to learn about data structures and algorithms
yeah but it's not as deep as computer Science.
Deep enough to answer these Interview questions. I doubt that algorithms aren't on a need to know basis, once you've gotten a job.
CS > SE
Im so late, but this reply is so underrated. Also very true. lmao
Software engineering is for students who just want a job and don’t actually care about science or theory
Thank you so this helps a lot
Although my personal goal in finding my
Currier path is not so much about landing a good job but
Finding one that I'm very passionate about. I might change my mind
Because I'm only 14 and not as worried about a good salary lol.
We actually studied all the topics you listed under computer science (data structures, algorithms, etc.) in addition to the topics you listed under software engineering in addition to other topics (e.g., databases, computer organization, operating systems, networks, etc.) during my undergrad studies in Computer Engineering.
Note: my university offered both computer engineering and computer science programs (under two different departments) but they didn’t offer a software engineering program (although computer engineering majors were required to take a couple of courses on software engineering).
Ahmad Ashkanani So you are saying that Computer engineering offers you the same courses of SE and CS
hamza junaid what I am saying is that there is some overlap between the disciplines and what you actually study under each major might differ (at least to a certain degree) from one school to another. So rather than generalizing what CS, CE, and SE study and do, it might be better to look at the curriculum of the major you’re interested in from the school you want to join. IMO the actual content you learn matters more than the label.
Actually colleges are starting from the next month and I have to choose my major but I'm a bit confused btw mechanical and software engineering
So I'm doing research on this from 2 months and what I saw that you can become a software engineer after you do Mechanical but there is no other way round , is it correct?
What would you recommend?
P.S: I'm curious by nature and love to learn new things especially those which I can apply to create things around me and to be very frank I am not passionate about any particular major
hamza junaid I would consider two factors when making my decision: (a) where my passion lies and (b) what the job market demands. If you’re equally passionate about the two majors, then probably you’ll need to look at the job market. So it really boils down to job demand for the two majors and supply of engineers from each major in your area of living (or potential geographical areas that you’d consider moving to after graduation). If job demand significantly exceeds the supply of engineers for a given major, then that’s the major you’ll probably want to go with (assuming you like both majors equally, which is probably not the case for the many people).
Ahmad Ashkanani I live in Pakistan and in my neighbour country India Comp Sci/Software engineering is soaring and they are paying them alot because of the reason that Tech companies have made their headquarters in India and I think that this trend is soon to come in my country also, that's why my seniors and friends of my parents are advising me to go for software (The top University in my city isn't offering Comp Sci)
Question-
Are Software Engineers a mix of CE and CS? I've always thought that.
You'll learn how to code, how to create, and learn about developing and more.
SE teaches software engineering practices such as how to program in programming languages, software development processes (e.g. Agile, Lean, Waterfall, etc), compilers, etc. CS is focused much more on algorithms and logic. SE *also* does teach algorithms and that's the only similarity between SE and CS. However, SE does not go into algorithms as deep as CS does. In short, SE involves lots of subjects in programming practices, whereas CS is heavily focused on algorithms (for problem solving).
Just get both! I went to Park University and there was only about 5 classes extra that you had to take to double major with both.
dude i see you there everyday
5:34 “Show me your [algorithms] and conceal your [data structures], and I shall continue to be mystified. Show me your [data structures], and I won’t usually need your [algorithms]; they’ll be obvious.”
-- Fred Brooks, _The Mythical Man Month_
Thank for your 3 sample questions!
CS degree with a math minor is the way to go, imo.
Yup! I only have to take 3 extra math classes for my math minor: calculus 3, differential equations and Real analysis
You also learn the professional capacity in computer science, I think they're relatively similar to be honest. I do find it easier for a CS major(myself) to transition into software engineering whereas software engineering isn't so easy to transfer into computer science. You can apply a lot of CS to SE, but not the other way around which is I think mostly why you recommended CS.
in terms of the sample interview questions, here are my answers (judge my answers plz)
1. Traversing a tree to a value - Is the tree sorted/ordered? if yes, what's the rule of ordering? traversing a tree requires the root node and some temporary nodes to traverse and then go back to the root and use the other branch.
2. a hash map is a data structure that "maps" a key to a value. hash functions are used to determine in what part of a table the key-value pair will be stored. a hashmap resizes itself depends on the implementation; for a hash table, the bucket table is usually implemented as a dynamic array and then all the previous key values are reinserted and rehashed to the newly sized table.
3. the difference between an interface and abstract class - I don't know because I've never encountered a situation where I needed an interface or an abstract class.
ܚܢܘ ܚܢܐ
An abstract class is just a class of which there can be no instance.
I have heard that people are avoiding the usage of abstract classes more and more, instead using interfaces, which do much the same thing.
ahh so an abstract class is just a prototype of a class?
Interface is a template for some sort of functionality. You don't use these independently, they are components of something bigger.
Abstract classes are templates to extend from.
so the difference between an interface and abstract class is the difference between a struct of function pointers and a struct of function pointers with members?
It's not that the teacher is bad at teaching; it's that the teacher is bad at teaching you. Everyone has a different style of learning and a teacher has their style of teaching. Those two aren't always compatible. Your job as a student has been distilled down to churning through the endless content they give you, either to internalize it or to use it to solve a problem. But your job as a student really should be learning what is needed for you to learn. Subject matter is a big part of this, but so it the manner in which it's presented.
I couldn't understand OOP programming (of really, even anything more than simple control flow) until I found the right professor that happen to have just the right teaching style for me. He distilled each concept down into its basic components, used a minimum of boiling plate so all we were focusing on was the topic, then described the entire life cycle. The 'life cycle' was important, because personally I don't work well with a "black box." For instance, he taught us about value vs reference types very earlier on. That's typically considered a more advanced topic, but there's nothing inherently advanced about it, and if we truly want to understand what is happening to an int vs a string and all the way up to a class, the value vs reference is important.
His style of teaching made it all "click" for me, and all the pieces just started falling into place. And that's the key. Either the university needs to make you take the same class with 10 different professors and hope you get luck at finding one that teaches in a way that best works with your manner of learning harmoniously, or you need to do this on your own until you learn enough about how you learn to be able to recognize it yourself.
Put simply; your job as a student is to learn how to learn.
how likely is it to get a job as a software engineer or computer scientist??
As someone who completed his CS degree 30yrs ago and has worked as an SE ever since I don't know how you can be an (effective) SE without an understanding of CS. It's the same "false dichotomy" seen in pure vs applied math, if you don't know the theory, how can you apply it?
Tapecutter59 apparently English majors can become software engineers these days, I agree that it's important for software engineers to understand the theory. If you've ever worked with someone who has a non SE/CS/IT degree you will realise how difficult those kind of people are to work with because they think they understand but they don't.
Because today we code above many layer of abstractions so many fundamental things are already handled by programming language and OS
i dont get why there's something called SWE as a BA, like its a fancy name for CS
Uhh I dunno how it is over there but in Sweden, "Software engineering" includes a bachelor & major in computer science as well as the civil engineer stamp. They're basically the same thing, or comp sci is a subset of software engineering
Julien Adler
Actually software design is part of applied computer science, not the other way around.
Civil Engineering?
A friend of mine graduated from computer science six years ago. after that, I did basic database jobs, but he can't program. He's back to school to learn more programming now
Yue Yu seriously?
Seriously, he knows algorithm a lot better than me, but he gets rusty after so many years
Hahaha straight to the point. I like it! Algorithms and Data Structures is so huge. Eat! Breathe! and Sleep! sorting algorithms! And practice interviewing with your professors, friends and family.
Gotta love those algorithm challenges, can't get a job without it.
What if you're interesting in programming Video Games? What major would I have to take? CS or CE? Currently, I'm taking CS but I feel like I should switch before it's too late. I'm still a freshmen in college.
Very eloquently put, and very helpful.
Im a SE major and this are my major subject..
1. Core java 1
2. Core java 2
3. Ent java 1
4. Ent java 2
5. Design Pattern (in java)
6. Functional Programming (scala)
7. Fundamental programming (c++)
8. Data structure and algorithm (c#)
9. Data communication
10. Database
11. Python
12. Mobile computing 1 Android studio
13. Mobile computing 2 IOS development
14. Project management
15. Human and computer Interaction (UX development)
16. Web Programming (HTML, CSS, JAVAScript)
17. Web Programming 2 (PHP)
Spit my foods
I'm a computer science major at my school. We do not have a software engineering major. However, you do get to choose a focus on what elective you want to take for your upper division, which includes software engineering. We are also required to take a few classes based off software engineering just to graduate as a computer science major. I feel like this is one of the best options to learn theory and have a good understanding it and then being able to apply it to more real world application.
That's great, whatever major you choose you just want to be prepared when it comes to real world interviews. A lot of my algorithms videos are meant to give you a glimpse into that world.
This video is very helpful. Thank you for your time!
Adding to favorites!
I think the key difference is that Software engineers don't actually need to code... In fact, many jobs don't need you to. A lot of SE goes to the design and analysis of whole HUGE projects. Kind of a rule of thumb: SE design the system and CS build it.
People here trying to specify the differences, you're basically all wrong. Software engineer pretty much describes what it is. You'll be an engineer (and all generic aspects of being an engineer) of software. Computer science is generally just a broad term applied to anything that doesn't specifically fit software engineer, for better or worse. If you graduate as a software engineer, you'll get a CS degree anyway. Basically, just specifically ask what any course is about, what actual skills you'll be learning and most importantly, to what level. I've seen people graduate with a CS degree because they were able to make a website run.
In CS you also learn infographics, AI, network, security. Engineer will learn more how to maintain good solution on the overall project, do more humain to humain stuff, they will plan the software before the programmer can even touch a line of code
I’m going to school for both game design and software engineering but I need a bachelors in computer science or computer engineering in order for me to get a job in a game industry
7:20 This distinction only has meaning for particular languages. For example, C++ and Python do not have the concept of an “interface” _per se_ .
Lawrence D’Oliveiro
True, sounds like a java question.
No true, C++ has that concept, even if it's an implementation detail, you can make a class purely abstract, meaning that it has to be extended to function. I would bet that Python has a similar concept, Interfaces are a vital part of SD to remove direct dependencies.
I have the option of studying a bachelor in SC, OR a bachelor in SE and after that a master in CS. Maybe doing those 5 years is the most optimal route?
I'm a final year comp sci student and they never taught us hashing. Thanks for the heads up
Willem Swarts that should have been in your Data structures and algorithms class. What school do you attend?
Monsieur Africain a university in South Africa. At least they taught the rest so well that hashing wasn't that hard to catch up on
Willem Swarts, oh ok, that's good to know.
Same here. Maybe they let us to learn by ourselves.
Hashing is a very basic concept. Just gotta know that elements are stored as key value pairs where the key is inputted into some hash function and generates the value
There is a big difference: Math
Do you not have to learn math in Software engineering?
A friend is studying "applied Computer science" which is the literally translation from his degree but is software engineering.
However, i study CS in a Technical Institute and sometimes we try to learn together - it is mostly impossible.
If you look at the moduls, you can see the difference:
Me: 50-60% math of mandatory courses.
He: 10-15% math and much much easier one.
So yes, there is a big difference in studying one of them.
But also finding jobs are more or less different, he cant work at research or development (except software engineering) because of his lack of theory.
Hundeherz So which has more math involved , Cs or Se
Depending on the University but mostly CS has much more and "higher" math involved.
I study SE And we have Have Algebra and Analytic Geometry 1, 2 and 3, Discrete math and Mathematical Analysis 1, 2 and 3 as well as Statistics and Probability (those are 2 separate subjects). I Don't think that's little nor easy math...
So they basically made applied computer science it's own major?
Makes sense.
Some comp sci courses are not very important for a software designer / network administrator and some things important for software design are only glanced over.
Taxtro I know it depends on the person but I'm trying to figure out the differences. Seems the majority are saying the two are the same and I'm a little confused. Maybe I'll just watch a few more videos on it !
Great video, thank you !
It Depends on what kind of Degree you are doing.This video is describing the difference between Degree in Computer Science vs Degree in Software Engineering.But if you study Bachelor of Science Honors Degree in Software Engineering,you get to major in both Software Engineering and Computer Science.
There is not much differences. CS is a higher level one of the two. SE would be less math intensive and more practical. (But also more supply than demand in labor market). My personal opinion, I am an Architect (designing building), I only study CS because people keep thinking that I am an architecture engineer in computer science.
My college doesnt offer Software engineering as a major, instead its just a class CS majors take. From the way i see it, you can pretty much self teach yourself software engineering, but CS is based more in computational theory
I have studied CS both in bachelor and masters.
CS has a lot more Math related courses than software engineering. the topics mentioned in video such as alogirthms, time complexity are not really the difference.
Hey, I am a big fun of your channel! so Thanks! for all the videos. Just want to make a quick correction on your general misconception about Software Engineering as Undergrad study. I don’t know if you actually did a research about this topic and actually checked the required courses for undergrad CS and Software Engineering major. Just for my background, I am under grad 3rd year Software Engineering student in Bay area.
First, like you mention on beginning of your videos Software Engineering was introduced not long ago as undergrad study. It was mostly considered graduate level study, as matter of fact there are only two Universities in bay area that offer Software Engineering as undergrad (SJSU and Cal Poly undergrad and CMU graduate in their SF campus). All UC Universities, SCU and Stanford University don’t offer Software Engineering degree, so if you want to attend Ivey league you pretty much have to study EECS/CS. When it comes to the course loads, both CS and Software Engineering students have to complete All Object-Oriented programming, Data Structure and Algorithm class - it’s part of core major requirement. The only difference is Software Engineering - we take 4 more class (Software Engineering I, II, Software Test and Q&A) that prepares you more for Enterprise Software development. The other difference depends on Senior years elective courses, which again don’t have much difference because its depends on the student preference. At Senior years we only pick 2 electives for both CS and Software, if students want to specialize on security, the will take more software security classes, if Networking then we will study 1 more networking class… etc
By default, most students apply to CS major because that’s the common undergrad degree offered by most universities. The most curtail thing is Not getting the degree its gaining experience with the degree, so please try to do Internship!
Overall I'm still somewhat confused about these two distinctions. Back in the good old days, there was only Computer Science and Electrical Engineering Computer Science.
I think software engineering should be a specialization, not a undergrad. Firstly, Most companies have their way of developing software, so what matters is experience, not much what you learn reading a book (in regards to software development).
Second, in SE you take classes that are useless in IT jobs, like chemistry and physics for engineers, but those classes are the one that give you the engineer status lol. A proof that you may learn software development processes without needing an SE degree is that there lots of self taugjt coders that work as sofrware engineers that complain only about not having CS knowledge and how it makes them have a harder time on their jobs, but ive never seen a self taught coder or someone with a CS degree complaining that they dont understand software development processes. And last, saying a SE is more complete than a CS grad, is like saying taking a Medical specialization without going through a normal medical grad is" better" as it focuses more in practical stuff. Doesnt make much sense. SE will give you the engineer status but beyond the fact that it literally makes you practice more coding and that, i see no advantage in taking it over CS. Plus, you can practice coding by yourself on CS, but as that takes the responsiblity factor into consideration, ppl are usually afraid of that lol.
Reppin' Software Engineers at UTD
please can you tell me the difference between computer engineer and the software engineer.thanks
Daniel kifinga in my figure computer engineer is some one who learned how to solve computer problems such us in hardware problem which including repairing and maintainance of computer life but software engineer is some one who learnt how to develop a software and solve a problem of any organization from file system to software environment !!!!!
I'm doing a bachelor's in physics.
Sadly our university doesn't offer any IT course as a complimentary subject
Video was really informative and everything said was correct, but I would like to add that only with university experience you wont get a job, if you want to land a job you should also have some code written by you that employer could see (your git for example).
I have both my major is comp. Science/ soft. Engineer
You’re aet
Hello, I have questions. Which one required more theory and mathematics? Which one was more easier
Hi! I'm a 1st semester software engineering major with 2nd semester sophomore standing. For this reason, I have the option to potentially graduate early, but I would not mind staying in school for a little longer to get more education. Would you say that it is a good idea to get both minors in Computer Science and Mathematics--along with my major in SE--or just graduate in 3 years and start looking for a job with less experience ? Getting both minors in CS and Mathematics would put me at around 4 years to graduate, with the last semester only being part-time.
Hi Brian, May I ask you a quick question? If you have an APP idea, is it OK to sketch it out on a piece of paper or just build it and figure it out along the way?
Sketch it out first obviously
Probably want to sketch it out. My thought process behind this is, if you just build it first without planning it out, you might write code for something that you realize you might not want later on or maybe wished you wrote your code a certain way and now have to go back and fix everything. From my experience, sketching it out helps me be way more efficient b/c you have a good idea of what you want
Sketching out an app is called "wireframing." Definitely do your planning before implementation.
CS student here. I was sure Brian was going to saw Software Engineering because it seemed as though he was leading up to that, in addition to what I've heard from peers about the industry. I have friends with degrees in CS and SE and all of them are doing well. In the end, it's all about the work and time and effort.
mfw @5:11 ... nani?
Because both these majors are quite similar, I think as long as you understand algorithms and data structures, you'll be good.
DMBisAwesome
"My recommendation is to go and study OMAEWA MO SHINDERU"
is it true that CS has more (and harder) math (that is not even useful in the real world) compared to CE/ SE?
I study software engineering. What you mentioned in regards to the curriculum of comp sci. Is covered in SE.
what are your thoughts on bootcamps or learning on full stack javascript on your own? Will it get you a job or is a masters in computer science a better route?
Experience beats out a degree.
Depends on where you want to work though. Big tech companies like Google/Facebook highly prefer Master/PhD candidates whereas the common job market provides lots of opportunities for experienced Bsc holders.
Great video. Helped figure out what I need to study. Thanks.
I’m in my junior year , major is computer science with a focus on software development. Only difference between a regular c.s. Degree at my school and software development is for software development you have to take software engineering II and software testing as two of your three electives
Has anyone tell you, you have a good radio voice?
Hey, great video. I just wanted to ask maybe you know great websites/tutorials/ books to practice on algorithms? I had algorithms course in university but I dont think it was enough. Once again thank you for great videos.
Correct choice, Mechanical Engineering
So in short, software engineering is like physics whereas compsci is like math?
Was physics or math mentioned at all ?
Nah, software design is part of applied computer science.
So it's more like software design is like measurement techniques and computer science is like physics in general.
Each is very useful on it's own without delving into more and less useful theoretical physics / computer science.
Did software engineering and learnt everything that was in the computer science slide and your software engineering slide. That seems to be the norm of most degrees here in Aus
Well said and well compared! Computer science dwells more on the language..
In the real word you rarely write linked lists or sorts. You google and copy code that already works. In the real world you leverage existing code to put it together to solve a business problem efficiently. Your sample questions are fun to make you think and get you an entry-level job because you have no real world experience.
Yep, agreed. These are the gating entry level questions that you have to pass in most companies as interns or junior developers. In the real world I don't think I've implemented a linked list more than maybe 2 times.
Can I become Software Engineer after doing Computer science ?
Nice, school's job truly just exposes you to things and subjects you may be interested and of course the basics like english grammar and math (the most important subject being religion, catholic teachings in my case for that is eternal and it's related to the moral use of your talents- be it coding, code for good instead of creating malware for example). The internet makes it easy to expound on these subjects that the schools introduced to you. You are very, very blessed if you have a really good teacher, that'll be a shortcut to being an expert in a certain subject- they're usually in a good and expensive schools unfortunately. God bless, Proverbs 31
I study computer engineering. I learn both CS and software engineering, basically. So, I don't know how it goes in other countries, but if you are not sure which to choose, I'd say go for CENG, it has everything in it. (At least in my country)
Irem Kaya we don't know your country nigga.
Danlee Platnumz whats that got to do with anything 😄😄 I commented to say that comp engineering exists too hahah
Computer engineering is something different entirely. Ot's a kind of electrical engineering / technical comp sci.
wow man u are so kind ... thanks for ur help
Please help me to choose...I really your advise.....I like to code...i like Java...
I have 4 options:
IT degree(web tech related)
~web programming/engineering
~networking
IT degree(software development related)
~software engineering
~networking
~project management
CS degree(Software Engineering)
~AI
~sw requirement engineering, sw engineering, sw design architecture, sw qa test
CS degree(Game developement)
~game development related
Engineering is the application of science. And computer science is about computers like astronomy is about telescopes.
Software engineering is not really about software either.
And OOP is a fundamental mistake.
Great video!
I think you should compare computer science and computer engineer next as they are two different majors but both have their similarities. When I was in high school, I didn't know the different between the two but I saw the word engineer and went for the major. Little did I know that Comp E is a mixture of Electrical Engineering and Computer Science, but I guess thats whats nice bout Comp E is that you can choose which field you want to focus in (hardware or software) later in life. Don't get me wrong, I love Computer Engineering now but I think it'll be informational for those people who wants to major in software development and doesn't know the difference between Comp E and Comp sci.
Yeah very subtle differences that we're talking about here. My university had Comp Sci and EECS that had a ton of overlap in lower division courses.
Ok so I know this is a weird question but I'm about to start college for a degree in Computer Science with a concentration in Software Engineering so which one does that fall under ?
I want to work with Microsoft or some other companies like Google, Facebook..what should I study??
You should study how to become the try hardest person in the planet. Study 10 hours a day after you wake up :). It doesnt matter which
Just learn to code lol
Study Electrical Engineering and kick ass
It's the same thing, only one involves *few* practical approaches to solving real-world problems. Don't get confused kids.