Yesterday I tried to explain to someone the difference between computer science and software engineering. I have degrees in both fields. The “pop” view of software engineering is that anyone who writes code is a software engineer. But there are formal definitions that are bit different than the pop view:
Computer Science is recognized as an independent discipline with an inherently mathematical nature. Its activity ranges from theoretical areas such as the theory of automata, system organization and logic design, formal languages and computability theory to applied areas such as scientific computing, programming languages, bioinformatics, software management, and computer systems.
If Computer Science is about writing code, then Software Engineering is thinking about writing the said code.
The technical requirements of these software engineers include a strong foundation in mathematics, natural sciences, and computer science; a broad education in software engineering and design; an understanding of computers and networks; a better appreciation for all aspects of the software engineering life cycle; and the use of methodologies and tools.
…. Software engineering graduates need to have substantial communications, business, and reasoning skills. Graduates should be able to work in groups; make presentations to technical and non-technical audiences; write coherent well-reasoned reports; and assess the social, technical, legal, and commercial implications of the technology they help to create.
The bold faced section is the best – computer science is the underlying theories of logic, languages, algorithms and programming.
Software engineering is about how we do that in the context of design and architecture of software, the methodologies and processes used to manage, design, create, implement and perform SQA on software, and the interface between software and stakeholders (customers, the organization, management, developers, QA). As you can see, software engineering sits logically above computer science, perhaps in the way that electrical engineering sits above physics.