Independently and cooperatively analyze and enhance existing designsimplementations Apply theoretical knowledge to software design, implementation, testing, documentation and support and maintenance activities as well as software packaging