Software engineers develop really big software applications. When an application is too big for a few people to build, two things become critical. First, code that works is no longer good enough. Since a lot a people are going to have to work on the software, the quality of the internal design of the software matters. We need good ways to divide the system into pieces so different people can work on it and so that functionality can continue to be added to it. Second, there are specialized tools and team management processes that we use to ensure that the pieces we are building will fit together without losing any functionality. In addition, we need to be able to predict when we will be able to make a quality deliverable to our customer. Students studying software engineering complete a core of computer science courses and specialized courses in project management, software design patterns, large scale architectures, and team product development
Software engineering graduates are sought by organizations that have rigorous demands on their software. This includes military applications, fault tolerant applications like airplane control systems, and applications that are too large to fit on one machine. Also, large software development organizations employ software engineers to coordinate the activities of many software developers. This means that software engineers can work on anything from PC-based applications to real-time embedded control systems to enterprise-wide systems. Since they are well-versed in computer science techniques, software engineers can work in any software development activity.