Software engineering problem sets self-test questions and reference answers