This class includes information on the strategies and concepts associated with the design and implementation of large software systems. Both sequential and concurrent systems are considered.
Emphasis is placed on understanding the levels of abstraction involved in software engineering.
The software life cycle, design methodologies, design objectives, documentation, configuration management, reliability issues, maintenance, and software tools are discussed. Requirements and specifications, both formal and informal, are studied. Verification, and validation issues are examined. Management principles, human communication skills, and documentation considerations in the software engineering process are also explored. Case studies are emphasized.