Software life cycle and process models, requirements engineering, software project management, data and process modeling, software design techniques, software coding, software verification and validation, software evolution, software reliability.