This article separates computer science into six other categories, with software engineering being one of them. How is software engineering like computer science? How is software engineering different?
Each category is further described by a spider web diagram, showing the topics covered and the degree of emphasis on each topic. A comparison of computer science and software engineering shows the overlap and differences in topics and emphasis. It positions software engineering as a category of computer science. This categorization contrasts the STEM categorization of four main disciplines: science, technology, engineering, and math. Science discovers general principles and problem-solving techniques. Engineering uses those principles and techniques to develop solutions to problems. Technology uses practices and tools to deploy, operate, and maintain those solutions in practical applications. Both perspectives are helpful. At a higher level of abstraction, the STEM perspective shows that computer science and software engineering have fundamentally different processes. At a more detailed level of abstraction, the six degrees perspective shows the intersection and difference of topic coverages between computer science and software engineering and the other four disciplines.
Computing Related Fields
Software Engineering
Software engineering is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy the requirements of the users. It has developed to meet the needs of industry for graduates capable of working in teams on large software systems.
There is significant overlap in the skills required in SE and CS - both require a strong foundation in programming fundamentals and some knowledge of computational theory. Where the two disciplines differ is their focus after that. While Computer Science is concerned about learning how to use computation to solve new problems in many different areas, Software Engineering is more concerned with mastering a specific set of skills required to design and develop reliable software projects. If you need someone to design a new way for computers to render more complex graphics in video games or solve new problems in computational biology, you want a computer scientist. If you want someone to help build a new application that is going to be a commercial project and be used by thousands of consumers, you probably want a software engineer.
Typical careers:
-
Software Developer
Education:
A Software Engineering degree will have many of the same programming courses as a CS degree along with the same basic theory classes and supporting math. However, the junior and senior years, while a CS student might take a wider range of more theoretical classes, a SE student will have coursework focused more narrowly on topics like designing and testing software, managing projects, and using industry standard tools.
Although some schools offer degrees specifically in Software Engineering, at most schools it exists as a specialization within the computer science department. Someone who knows they want to become a working software developer thus would earn a CS degree, but focus on the Software Engineering related courses instead of picking a more theoretical area to specialize in.
Knowledge Domains:
This diagram illustrates the knowledge areas required in this field. A 5 represents a very high degree of required expertise while 1 represents a minimal amount.