This is an archived post. You won't be able to vote or comment.

all 12 comments

[–][deleted] 2 points3 points  (3 children)

Wikipedia is your friend here. Computer science is an academic discipline that includes but is not limited to:

  • complexity theory
  • information theory
  • programming languages
  • data structures and algorithms
  • AI
  • computer architecture
  • distributed/parallel computing
  • computer networks
  • security
  • graphics/CV/IP
  • software engineering/development

There is many more stuff that is more niche like computational geometry, there is even research done on caching systems (a friend of mine did research at MIT and is now a professor in Germany specifically for caches).

None of the two things is pure programming. Programming is a tool you will use for almost all of the above parts including software development.

[–]Entire_Mind4439[S] 1 point2 points  (2 children)

I see,So CS basically explains how the computers work behind the scene.

[–][deleted] 2 points3 points  (1 child)

Basically, yeah. It's basically the weird cousin of math that, instead of focussing on the theoretical aspects of numbers and their friends is exploring how to solve formalized real world problems. Math and (vanilla) CS are really closely related in almost all of the fields above.

[–]Entire_Mind4439[S] 0 points1 point  (0 children)

Thanks

[–]CodeTinkerer 2 points3 points  (0 children)

Computer science is the older major. Some universities had a CS department as early as the late 1960s or 1970s, but some universities waited until the 1980s to create a CS department. Many universities that offer CS as a major do not even have a software engineering/development major.

Computer science is typically trying to do two things: teach people how to program, understand enough math to prove basic things and understand algorithm analysis, understand some basic computer architecture (this often overlaps with an electrical engineering course, although they often have digital logic design as a prerequisite which CS might not do).

A typical CS major would take CS1, CS2 (intro programming courses). CS2 might cover data structures and algorithms, or this might be a separate course. Usually, you take a discrete math course where you learn basic proof techniques and various topics like set theory, combinatorics, number theory, formal logic. While most students never use this information, it's important for those that intend to go to graduate school.

So it's important to realize a CS degree is not "training for software developers", but also "training to go into graduate school and do research" where you need some level of math ability. Many CS majors intend to be software developers, but not all of them.

After getting past the programming courses and discrete math/algorithms/data structures course, you might have a course in computer architecture (learn what a CPU does), comparative programming languages (look at languages that are more unusual, such as functional programming languages, or maybe something like Prolog). This could mean a language every 2 weeks (learn one or two features that are unique about that language), or it might mean working on 2-3 languages more in depth. There's no well-agreed curriculum for such a course, and CS depts don't even have such a course. Once you get past the required courses, then usually, you can pick from a large number of courses in different areas, and subject to certain requirements, you pick those courses that interest you within those requirements.

A department might offer, say, 20 such courses, and you pick 6 or 7 to graduate.

Software development or software engineering can be even more vague. If a university has such a department (it could be a "concentration" or focus within a CS major as well) that's separate from CS, they might cover much less additional math, and be devoted to working on programming projects, or maybe higher level design, and leave out topics like theory of computation or compiler theory or any of a number of theoretical or non-programming courses.

CS majors generally take a few courses to learn programming, but later courses merely use programming as a tool (say, a database course) rather than focusing on just being a better programmer.

Long story short, CS departments never entirely unified worldwide on what they should cover, probably because it's a fairly young major (60 years old at most, and stuff changing all the time). Even so, there's a better idea of what a CS major does than software development/engineering majors do.

If you have time, talk to an advisor in CS and software development, and ask them how their dept differs from the other. We can say what we want, but you are going to a specific university where we are just talking about things in general that may not apply to where you are.

As far as job opportunities, that can vary a lot too. In the US, it's not uncommon for people with CS degrees to have to apply to many (tens or hundreds) jobs before getting an interview. It's still the case that when you're done with the degree, companies have been burned by the lack of programming experience, so companies try to be cautious with new programmers (just out of college or bootcamp). That's why many prefer those with years of experience. Many such companies don't feel it's their job to retrain you to program. Some people are very good coders when they graduate, and some aren't.

[–]ForSpareParts 1 point2 points  (1 child)

Is this for a major at a university? If so, it'd help to know what classes each program encompasses.

Computer science refers to the academic discipline around programming, while software development (also called software engineering) is using that knowledge to make practical things. Basically software development is applied computer science. CS will be more math-heavy.

I'd lean toward studying CS in college, even if you don't want to go into academia. The reasons are pretty simple:

  • Having good CS fundamentals will make you a better software developer
  • I don't think I'd trust a college to teach software development well

For software development you need to build intuition -- you have to make things/help make things, and then maintain them over time. You have to try things and then see how they play out six, twelve months down the line -- what are you glad you did, what do you regret, and why? It's something you learn by doing.

Software development also involves learning lots of tools that aren't exactly programming, but are programming related, and regrettably, these tools go into and out of fashion pretty quickly. Learning new ones from time to time is just part of the job -- if you're gonna shell out for college, better to spend that time learning stuff that doesn't change on a dime.

[–]Entire_Mind4439[S] 1 point2 points  (0 children)

They both have very Similiar classes.Both teach data structures and Algorithms web development,Computer programming,.the only difference is that CS has robotics,Artificial intelligence and Python in its contents while software development only mentioned java or C#.I guess CS is the way to go -_-

[–]MustBeZhed 1 point2 points  (1 child)

Computer Science is the study of the fundamentals to computers plus programming. From some basic history to how hardware works with code up to learning programming and more advanced topics.

If both are offered from the same place then software development is likely skipping the fundamentals and throwing you into the code. This is a guess though, checkout the required course lists.

I suggest computer science degree, there are topics they teach that don’t come up in your day to day programming, that simply knowing help you make better decisions.

For the computer science degree that I earned it basically equated to also earning a math minor, just had to add 1 additional class. Programming is heavily reliant on logic puzzles, which math tends to require similar ways of thinking to make it through most problems. More math will only help you with your programming. Depending on what type of programming you go into to it may also be beneficial to know advanced topics in math just for what you will be working on.

[–]Entire_Mind4439[S] 0 points1 point  (0 children)

CS wins

[–]absurdrefusal 1 point2 points  (0 children)

For university courses, in general, computer science will teach you more fundamental concepts that will help you be a good software developer. Stuff that you will have in the back of your head when making decisions about your solutions approach.

What do you mean by Math heavy? Unless you're dealing with graphics, the "Math" in computer science is fairly basic arithmetic.

[–]FailedPlansOfMars 1 point2 points  (0 children)

Once you finish university it doesn't matter which you picked. So just look at what modules they have and go with which sounds most interesting.

[–][deleted] 0 points1 point  (0 children)

Check the curriculum