What is the difference between a computer science and software engineer major?

Click For Summary

Discussion Overview

The discussion revolves around the differences between computer science and software engineering majors, exploring their curricula, focus areas, and the overlap between the two fields. Participants share insights on educational paths, industry expectations, and the theoretical versus practical aspects of each discipline.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Meta-discussion

Main Points Raised

  • Some participants suggest that computer science focuses on the theoretical aspects of computing, including algorithms, data structures, and mathematical foundations, while software engineering emphasizes software development methodologies and project management.
  • Others argue that there is significant overlap in the early stages of both programs, with common foundational courses such as algorithms and data structures.
  • A participant notes that software engineers may not require deep mathematical knowledge, contrasting with computer scientists who might engage more with theoretical concepts.
  • One participant highlights that different universities may present computer science and software engineering differently, with variations in focus areas such as AI or software engineering principles.
  • Concerns are raised about the lack of distinction between the two majors in some educational institutions, leading to confusion about their respective roles and skill sets.
  • A later reply mentions that at one university, the software engineering program includes a year of industry placement, while computer science students may take additional theoretical courses and electives.
  • Another participant emphasizes the importance of researching specific course content rather than adhering strictly to the labels of CS or SE, as curricula can vary widely between institutions.

Areas of Agreement / Disagreement

Participants express differing views on the distinctions between computer science and software engineering, with no consensus reached on the exact nature of their differences. Some agree on the foundational overlap, while others emphasize the unique aspects of each discipline.

Contextual Notes

The discussion reflects varying interpretations of curricula and program focuses across different universities, highlighting the importance of specific course content in understanding the distinctions between computer science and software engineering.

kramer733
Messages
322
Reaction score
0
So my friends try to explain it to me and everytime they do, i come to the conclusion that they're the same. I just don't understand. If somebody studies computer science, what do they learn? If somebody studies software engineer, what do they learn?
 
Physics news on Phys.org
The Association for Computing Machinery, the Association for Information Systems, and the IEEE Computer Society have jointly identified five different curricula for education related to computing. You've mentioned two of them. In alphabetic order, an in-a-nutshell view of these curricula are
  • Computer Engineering - How to build computer systems.
  • Computer Science - How to program computers from a theoretical perspective.
  • Information Systems - How to take advantage of computers in a business environment.
  • Information Technology - "My email isn't working. How do I make that 'a' with a circle around it?"
  • Software Engineering - How to build complex software systems.

A bunch of problems arose as people began building ever more complex software systems: The systems cost a whole lot more than initially planned, they didn't work as planned when released, and they were hard to maintain. Some computer scientists began working with systems engineers to address these issues. The result became a discipline of its own, software engineering.

Computer science majors and software engineers have a lot of common basics that are covered in the first year or two of an undergraduate career. After that the disciplines diverge. Software engineers learn about cost estimation, verification and validation, software quality, software lifecycles, and other things that most computer scientists just don't learn.
 
Computer science:
Concentrates on the theory of computing. For example algorithms, mathematical aspects, algorithm efficiency, data structures, AI, discrete maths, predicate logic.
Software engineering:
Concentrates on software development methodology. For example testing, different methodologies eg. waterfall, agile etc., project management.
There is a lot of overlap between the two, especially in the first year subjects. Comp sci will then go on to specialise while software eng will focus on building large scale systems.
 
Loosely speaking, computer science is to software engineering as physics is to most other engineering fields.
 
There's a big problem with schools nowadays in that they don't actually distinguish between the two. Most schools have a computer science major, and sometimes that translates directly to software engineering. They're not the same and they shouldn't be. Computer science is more of a branch of mathematics than anything else, and most computer scientists don't really need to be badass programmers to do their jobs well. Conversely, software engineers don't need to be extremely well versed in combinatorics or something.

To find out what sort of program you're talking about here, you can look at the classes and the department. Is computer science part of the math department, IT dept., or engineering? Does a certain school even have software engineering as a major? Are CS majors required to take combinatorics, graph theory, number theory, cryptography, and other discrete mathematics classes?

To answer your question directly, software engineers primarily focus on getting a product out (in software obviously) using the engineering process. A computer scientist works in the theoretical realm most likely, and usually does R&D research on a variety of topics that may involve applications of certain types of mathematics to solve problems. For example, graph theory is used a ton in networking and there are people that are always trying to find out how to make information flow better and faster around the world. They're not the ones actually implementing the software or the infrastructure or anything like that, that's left to the IT and software engineering guys.
 
The focus of computer science students is to understand the theory behind computing. A CS degree provides students the skills necessary for a variety of jobs that include software development, programming, network administration, and database management to name a few. Software engineering, on the other hand, deals with learning to create software or applications for end users.

Why don’t you go through the details of both programs to learn more about what the curriculum of each looks like?
 
Last edited by a moderator:
At my uni, the CS and SE courses are identical but the SE students do a full year of industry placement, whereas the CS students take a major from (Network Programming, Security/Crypto , Games, Apps, Maths) and a few extra CS electives.

So we all do Algorithms & Data Structures, Theory of Computing, Programming, Discrete Maths, Database, Operating Systems, etc ... but a CS student will probably do at least one extra maths course, a bit more theory in field of choice and some more specialised programming, whereas a SE student will dive straight into a work placement.

I'm doing CS. I'm a touch worried that I won't have the kind of hands-on work experience that a SE student will have after completing a year of industry placement, but I'm enjoying my major and working on a few things in my own time to fluff out my resume a bit when I finish.
 
Computer Science is present differently by different universities. You will see that some universities have a CS course that mirrors another universalistic SE course .

I don't think you should have mindset of SE or CS. I think you should research the course content of the universities (Be it a CS or SE course) and pick it based on that alone.

If you pick a CS course the divide doesn't stop there for example you could come across this situation

University A = Heavily Based on AI

University B = Based on SE concepts

University C = Based on theoretical computer science


it took me hours to decided what university I wanted to go to. I made sure I picked a course that was a mixture of both applied and theoretical.
 

Similar threads

  • · Replies 23 ·
Replies
23
Views
7K
Replies
3
Views
4K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 7 ·
Replies
7
Views
3K
Replies
2
Views
2K
Replies
3
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K