F21RS Rigorous Methods for Software Engineering

Prof Andrew IrelandDr Hind Zantout

Course co-ordinator(s): Prof Andrew Ireland (Edinburgh), Dr Hind Zantout (Dubai).

Aims:

To provide knowledge and understanding of tools and techniques which support rigorous software engineering

Detailed Information

Course Description: Link to Official Course Descriptor.

Pre-requisite course(s): F28SD Introduction to Software Design or equivalent.

Location: Dubai, Edinburgh.

Semester: 1.

Syllabus:

The course addresses the challenges of engineering safe and secure software systems. It covers a range of rigorous processes and formal methods that support the development of high integrity software systems from modelling and reasoning about designs through to code, students will experience a range of state-of-the-art static analysis tools and techniques. While theory based, the course has a strong practical element, drawing upon industrial case study material where appropriate.

Learning Outcomes: Subject Mastery

Understanding, Knowledge and Cognitive Skills Scholarship, Enquiry and Research (Research-Informed Learning)

  • A detailed and integrated knowledge and understanding of a range of rigorous processes and formal methods that support the development of high integrity software systems.
  • Critical understanding of the relationship between code level annotations and high-level formal specifications.
  • Extensive knowledge of the mechanisms that underlie advanced static analysis techniques.
  • To be able to demonstrate a critical understanding of the relationship between code level annotations and flow analysis techniques.
  • To be able to demonstarte a critical understanding of program proof and how it can be used to provide strong formal correctness guarantees.

Learning Outcomes: Personal Abilities

Industrial, Commercial & Professional Practice Autonomy, Accountability & Working with Others Communication, Numeracy & ICT

  • Conceptualize and define new abstract problems within the context of automated software development.
  • Deal with complex issues and make informed judgements in situations in the absence of complete or consistent data.
  • Exercise substantial autonomy, initiative and creativity in the application of software engineering techniques.
  • Demonstrate critical reflection. (PDP)
  • Communicate with peers, more senior colleagues and specialists. (PDP)

SCQF Level: 11.

Credits: 15.