Assignments will involve designing, developing, and modifying large software systems; function-oriented and objectoriented modular design techniques; designing for re-use and maintainability; specification and documentation; verification and validation; project team organization and management.