Fundamental areas of software engineering including life-cycle-paradigms, metrics, and tools. Information hiding architecture, modular languages, design methodologies, incremental programming, and very high level languages.