At the end of the course students should be able to: (i) Understand the principles, tools, and techniques for requirements elicitation, specification, and analysis; (ii) Demonstrate the role of requirements in system development and maintenance; and (iii) Appreciate the difficulties of specifying requirements for real systems, as well as effective methods tools and techniques.