1.3. 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.

Like computer science, software engineers need a strong foundation in programming fundamentals and basic computer science theory. After that similar start, Software Engineering programs generally have a well defined sequence of courses focusing on the skills needed to develop reliable software in an efficient manner (problem modeling and analysis, software design, software verification and validation, development process management). While both CS and SE programs typically require students to experience team project activity, SE programs tend to involve the students in significantly more of it.

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 focus on that sequence of courses instead of picking a more theoretical area to specialize in.

A software engineer is expected to have expertise in software development ranging from theoretical, through development and deployment and configuration. They are also expected to have an understanding of how to develop the system architectures that programs run on and how the needs of an organization affect the software development process. The graph below shows this range of expected expertise.

Typical careers:

  1. Software Developer


Materials on this page adapted from:
Association for Computing Machinery