- Describe the notion of software as it is understood in SE

- Describe a definition of software engineering

- Describe goals of software engineering

- Be able to describe the peculiar properties of software based on the "No Silver Bullet" (NSB) paper (complexity, conformity, changeability, invisibility)

- Be able to describe the difference between essential and accidental properties of software (NSB)

- Give an example of a solution to a software development problem and describe why it is not a silver bullet (e.g. object-oriented design)

- Be able to describe the difference between functional and non-functional requirements and give examples

- Be able to describe the software qualities and give examples including possible metrics (correctness, reliability, robustness, maintainability, usability, portability, verifiability etc.)

- Describe the emphasis of a requirements document (what , not how)

- Describe the major qualities of a requirements document (complete, consistent)

- Describe the notion of a software process and why it is needed

- Describe the major steps of a waterfall software development process

- Describe the definition of an agile software development process (conclusion from the paper by Pekka Abrahamsson)

- Be able to pinpoint advantages and disadvantages of XP

- Be able to explain what OO programming means (e.g. by Stroustrup)

- Be able to describe the 3 main principles of OO programming

- Why is it important to specify and analyze a software design before implementation (especially for large software systems) ?

- Give a definition of software architecture by Perry&Wolf

- Know the Cleanroom process description (diagram in Fig. 2) [pdf]

- Know the Cleanroom formal design (3 stages: black box, state box, clear box: pp. 7-8) and verification process (pp. 9-10)

- Know the Cleanroom statistical testing approach process (4 items on p. 11), testcase generation process (pp. 11-12, Fig. 7)

- Know the summary of design hints from the paper "Hints for computer system design" by Butler Lampson (Fig. 1)

- Know the list of major software analysis methods