Computer science vs. software engineering

In summary: CS. In summary, Computer Science (CS) is focused on the underlying theory of computation and has roots in mathematics. It is best suited for those interested in the true nature of symbols, information, and algorithms. On the other hand, Software Engineering (SE) is more focused on the practical application of computer science concepts to solve real-world problems. It involves project management, specific languages, and real-world usage. Both CS and SE have some overlap in their curricula, but the former may require more math and the latter may have more hardware classes. Ultimately, it is important to review the specific syllabus and discuss with academic advisors to determine which program aligns best with your interests. Additionally, there are
  • #1
thrill3rnit3
Gold Member
716
1
What is the fundamental difference between the two? Sorry for my ignorance but I was just wondering :smile:

I'm planning to do a 2nd major with Applied math and cs/se, if that helps.
 
Physics news on Phys.org
  • #2
Computer scientists know how to write very efficient and complicated software.

Software engineers design, and execute the software development life cycle from an engineering perspective.

Both can do the either ones job.
 
  • #3
so considering I am majoring in Applied Math, which one would be a preferable 2nd major?
 
  • #4
anyone?
 
  • #5
So after reading the topic of the thread, I too became interested in what the difference was, and after Googe-ing things and reading articles, this might explain some differences in Computer Science and Computer Engineering, referred to as CS and CEN in the article, respectively.

The link to the article is: http://www.eng.buffalo.edu/compscie_vs_compeng.php"

Scientists and engineers are both interested in the nature of things, in understanding how ideas and objects in the world fit together. But in general, they seek to understand the nature of reality with different ends in mind: the scientist seeks this understanding as an end in itself, the engineer in order to build things. Thus CS is closer to the underlying theory of computation, with its roots in mathematics, and CEN is closer to the design of physical devices, with roots in physics and chemistry as well. Students with an urge to build things, to measure how things work in the laboratory, those attracted to physics and chemistry as well as mathematics, should seriously consider CEN. Students with an interest in the true nature of symbols, information and their manipulations, the forms and limits of algorithms and data structures, should consider CS. Of the three great divisions in computing, namely theory, software and hardware, to a first approximation theory goes with CS, hardware with CEN, and software with both, but mainly with CS. The more general the software, the closer to CS; the more hardware-specific, the closer to CEN. Thus a student interested in creating his own new general-purpose computer language would best be served by a CS degree program, while one interested in designing a software interface for a new high speed serial device by the CEN degree program. Students undecided between the CS and CEN programs are urged to discuss the matter in depth with academic advisors within the CSE department, the College of Arts and Sciences (which administers the CS programs), and the School of Engineering and Applied Sciences (which administers the CEN program).

On a side note, have you considered earning a degree such as Computational Mathematics or a degree in Mathematics, pure or applied, with a Specialization in Computing?
I believe I also replied to your UCLA's Scholar's thread and UCLA offers both Mathematics of Computation (which allows you to take upper division courses in the Engineering school) and a Specialization in Computing which can be added to any Mathematics major except Mathematics of Computation.

Of course UCLA isn't the only school to offer that type of major or specialization. If I recall correctly quite a few of the UCs have similar programs. And even non-UC schools such as Stanford and USC.
 
Last edited by a moderator:
  • #7
thrill3rnit3 said:
What is the fundamental difference between the two? Sorry for my ignorance but I was just wondering :smile:
In theory there is a big difference.
CS is maths, the study of language design/algorithms and lots of linear algebra
SE is engineering, systems design, specific languages, project management, real world usage.

In practice it probably depends on which term was fashionable when the course was setup, , how much difficulty they have attracting students, and which faculty teaches it.
You need to look at the specific syllabus and decide how well the actual courses match your interest.

You might want to check if the course is accredited to any of the engineering bodies if that's important in your country - you might be able to count it toward a CEng/PEng, a CS course probably wouldn't.
 
Last edited:
  • #8
In my experience, a lot of CS and SE curricula are basically the same, differing mostly in distribution requirements and allowed electives, with perhaps a wildcard course thrown in for good measure.

CS is the theory of how things are computed, what things can and can't be computed, and how to compare various ways of computing things. This is a little different from mainstream mathematics in that one is not always necessarily concerned with computing in mathematics. CS is based firmly on mathematics and involves rigorous proofs, logic, and everything that goes with it.

SE is much more like a traditional engineering discipline. Mechanical or electrical engineering is to physics as software engineering is to computer science. However, SE is much closer to CS than ME is to Physics. SE focuses on how the ideas and concepts from CS can be applied to solve real-world problems.

In practice, like I said, CS and SE programs are largely overlapping. You should be alright in either.

* SE may require more hardware classes. If you're mathematically inclined, this may be something to take into account... you either love hardware or hate it.
 
  • #9
I'm probably more into software and programming than hardware.
 
  • #10
In that case, CS would probably be the best way to go. You can always take a few SE classes on the side. FYI, as a math/CS dual major, I hated the pair of hardware classes I took.
 
  • #11
*Same here. Math / theory / software inclined, hates hates hates the hardware. I can do it, and so can the other theory people, but that doesn't mean we have to like it.
 
  • #12
so CS has more math in it than SE? Because if yes, then that further solidifies my decision to go for CS
 
  • #13
"so CS has more math in it than SE?"

Yes... but like I said, enjoying mainstream mathematics does not necessarily mean you will like CS as much. You get a different flavor.
 
  • #14
"CS is the theory of how things are computed, what things can and can't be computed, and how to compare various ways of computing things. This is a little different from mainstream mathematics in that one is not always necessarily concerned with computing in mathematics. CS is based firmly on mathematics and involves rigorous proofs, logic, and everything that goes with it."

that's good enough for me I guess :smile:
 
  • #15
by the way, what kinds of maths are involved in CS? I've heard linear algebra and number theory...
 
  • #16
Logic
Graph Theory
Combinatorics
Formal Languages
...

And the comment about Linear Algebra was interesting. Maybe I'm just brain-farting, but where on Earth does one use linear algebra in CS? I mean, except for implementing code based on linear algebra, for instance matrix operations and such things... In my mind, Abstract Algebra has a lot more to do with CS than Linear does. When I think Linear Algebra, I think Quantum Mechanics.
 
  • #17
AUMathTutor said:
When I think Linear Algebra, I think Quantum Mechanics.
Or Google's pagerank
 
  • #18
"Or Google's pagerank "

Alright, granted. But the point stands that Linear Algebra isn't really a fundamental area of CS, even if it can be applied by software designers to solve certain computational problems. Like I said, maybe I'm just overlooking something.
 
  • #19
Yes it's useful for problems in correlations

I probably should have said abstract algebra. Linear algebra is mainly taught as an easier to visualise example of abstract agebra
 
Last edited:
  • #20
AUMathTutor said:
Logic
Graph Theory
Combinatorics
Formal Languages
...

And the comment about Linear Algebra was interesting. Maybe I'm just brain-farting, but where on Earth does one use linear algebra in CS? I mean, except for implementing code based on linear algebra, for instance matrix operations and such things... In my mind, Abstract Algebra has a lot more to do with CS than Linear does. When I think Linear Algebra, I think Quantum Mechanics.

here

mgb_phys said:
In theory there is a big difference.
CS is maths, the study of language design/algorithms and lots of linear algebra
SE is engineering, systems design, specific languages, project management, real world usage.

In practice it probably depends on which term was fashionable when the course was setup, , how much difficulty they have attracting students, and which faculty teaches it.
You need to look at the specific syllabus and decide how well the actual courses match your interest.

You might want to check if the course is accredited to any of the engineering bodies if that's important in your country - you might be able to count it toward a CEng/PEng, a CS course probably wouldn't.
 
  • #21
oops...didn't see that mgb physics already replied
 
  • #22
"I probably should have said abstract algebra."

I 100% agree that Abstract Algebra has direct and serious connections to CS. Inasmuch as Linear Algebra is related to Abstract Algebra, and in that Linear Algebra can be used to solve certain problems in a way that lends itself to computation, then yes, Linear Algebra is related to CS. I definitely think that Abstract Algebra more generally has a lot more to do with CS, though.
 
  • #23
so is abstract algebra a required course in most CS curriculum?
 
  • #24
"so is abstract algebra a required course in most CS curriculum?"

Not per se, no. Many CS majors do end up taking it, however. Those who don't take the math dept.'s version of the course get mostly "trickle down" Abstract Algebra in the form of data structures and formal languages.

I think that most theoretical computer scientists involved in research have some formal training in Abstract Algebra. I might be wrong.
 
  • #25
AUMathTutor said:
where on Earth does one use linear algebra in CS?

Computer graphics.
 
  • #26
AUMathTutor said:
Those who don't take the math dept.'s version of the course get mostly "trickle down" Abstract Algebra in the form of data structures and formal languages.

Not really. Data structures is fundamentally about how algorithms reflect the underlying data structure, Languages is fundamentally about the capacity of programming languages to express computation.
 
  • #27
Computer science, like Biology or Mathematics, is the study of nature. Specifically that branch of nature concerning algorithms, processes, and information. It can be very abstract & academic, but it's especially rich in applications. I think Dijkstra remarked that computer science is to computers as astronomy is to telescopes. The computer scientist sees the computer as a tool, through which one discovers truths about the universe. Some have remarked that just as computer science is not about computers, it is also not a science. But I don't hold that view. It is no less a science than is Mathematics.

Software engineering is the study of human organization, emphasizing how to marshall technology to solve problems. Programming is fundamentally a human activity, with a few or a great many humans working in concert. The software engineer is asked to find the harmony among budgetary limits, political constraints, heterogeneous skill levels, and deadlines. Remember, engineering is not a science, and engineering decisions are seldom if ever made scientifically. A command of technical issues is essential for a software engineer. But over the long haul of a career, the soft skills of persuasion, effective communication, and team building will prove at least as important.

Whimsically, the computer scientist gets paid to solve yesterday's problem with tomorrow's technology, while the software engineer gets paid to solve tomorrow's problem with yesterday's technology.

About 20 years ago, a Nobel laureate in Physics remarked that in a hundred years Computer Science will finally be recognized as a subdiscipline of Physics. I think it would be interesting (given the work of Stephen Wolfram) if the opposite turned out to be true.
 
  • #28
subdiscipline of physics? interesting...
 

1. What is the main difference between computer science and software engineering?

The main difference between computer science and software engineering is that computer science is a broad field that focuses on the theoretical foundations of computing, while software engineering is a more specialized field that focuses on the practical application of computer science principles to the development and maintenance of software systems.

2. Can someone with a computer science degree work as a software engineer?

Yes, someone with a computer science degree can work as a software engineer. Computer science provides a strong foundation in programming, algorithms, and data structures, which are essential skills for software engineers. However, additional training or experience in software engineering principles and practices may be necessary for a successful career as a software engineer.

3. Which field has better job prospects, computer science or software engineering?

Both computer science and software engineering have excellent job prospects, as technology continues to advance and the demand for skilled professionals in these fields increases. It ultimately depends on the individual's interests and strengths, as well as the job market in their area.

4. Can computer science and software engineering be studied together?

Yes, computer science and software engineering can be studied together. Many universities offer combined programs that cover both fields, as they are closely related and complement each other. This can provide students with a well-rounded education and prepare them for a variety of career paths in the technology industry.

5. What skills are important for a successful career in computer science or software engineering?

Some important skills for a successful career in computer science or software engineering include strong programming skills, problem-solving abilities, critical thinking, and the ability to work well in a team. It is also important to stay updated on the latest technologies and to continuously learn and adapt to new developments in the field.

Similar threads

  • STEM Academic Advising
Replies
1
Views
354
Replies
2
Views
890
  • STEM Academic Advising
Replies
6
Views
1K
  • STEM Academic Advising
Replies
23
Views
3K
  • STEM Academic Advising
Replies
8
Views
1K
  • STEM Academic Advising
Replies
3
Views
292
  • STEM Academic Advising
Replies
17
Views
2K
  • STEM Academic Advising
Replies
4
Views
953
  • STEM Academic Advising
Replies
9
Views
948
  • STEM Academic Advising
Replies
3
Views
795
Back
Top