SE. Software Engineering (30 core hours)
SE1. Software processes and metrics (core -- 6 hours)
Software life-cycle and process models
Software metrics (product and process metrics)
Introduction to software standards and documentation
Software quality assurance
Configuration management and control
Project planning and risk management
Software estimation
Software maintenance and re-engineering
SE2. Software requirements and specifications (core -- 6 hours)
Requirements elicitation, review and acceptance
Requirements modeling, analysis and specification
Rapid prototyping
Formal and executable specifications
SE3. Software design and implementation (core -- 6 hours)
Using the requirements specification document
Introduction to software architecture
Object-oriented decomposition and design
Functional decomposition and structured design
Design experimentation and prototyping
Detailed design and implementation
Design reviews
SE4. Verification and validation (core -- 6 hours)
Aspects of quality and their importance (reliability, correctness, etc.)
Quality assurance techniques and the software development process
Testing methods (acceptance, integration, unit; black box vs. white box
testing)
Coverage measures (line, condition, branch)
Testing specialized classes of applications (real-time, embedded, database,
web, GUI)
Concepts of formal verification (assertions, invariants, pre- and post-conditions)
Software
testing management (test plan development, test case design,
tracking, release engineering)
SE5. Software tools and environments (core -- 3 hours)
History of development tools and environments; the significance of
Unix
Programming environments (integrated editors, compilers, interpreters,
debuggers)
Modeling tools (structured, object-oriented, database, and GUI
modeling)
Testing tools (test coverage, defect tracking, test management)
Product management (version control, configuration management)
Tool integration mechanisms (control integration, COM and CORBA,
repositories)
SE6. Software project methodologies (core -- 3 hours)
Team management
Project planning
Requirements engineering
Design specification and review
Product engineering
Software quality assurance
Software configuration management
Documentation