<?xml version="1.0" encoding="UTF-8"?>
<CourseUnit xmlns="http://www.manchester.ac.uk/CUICourseUnitDetails" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.manchester.ac.uk/CUICourseUnitDetails.xsd">
  <UnitCode Applicant="Y" Label="Unit code" Student="Y">
    <Code>COMP63101</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Formal Methods for Software Verification, Security and Computer Science</Title>
  </UnitTitle>
  <MaxUnits Applicant="Y" Label="Credit rating" Student="Y">
    <Units>15</Units>
  </MaxUnits>
  <TeachingPeriods Applicant="Y" Label="Teaching period(s)" Student="Y">
    <Period>Semester 1</Period>
  </TeachingPeriods>
  <AcademicCareer Applicant="Y" Label="Academic career" Student="Y">
    <Value>Postgraduate Taught</Value>
  </AcademicCareer>
  <UnitLevel Applicant="Y" Label="Unit level" Student="Y">
    <Level>Level 6</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Renate Schmidt</Name>
      <Role>Unit coordinator</Role>
    </StaffMember>
  </StaffList>
  <OfferedBy Applicant="Y" Label="Offered by" Student="Y">
    <OrganisationList>
      <Organisation>
        <OrgName>Department of Computer Science</OrgName>
      </Organisation>
    </OrganisationList>
    <GroupList>
      <Group>
        <GroupName></GroupName>
      </Group>
    </GroupList>
    <FheqLevels>
      <FheqLevel>
        <LevelNumber>1</LevelNumber>
        <LevelName>FHEQ level (Framework for Higher Education Qualifications) ' Masters/Integrated Masters P4 ' </LevelName>
      </FheqLevel>
    </FheqLevels>
    <Ects>
      <MaxUnits>European Credit Transfer &amp; Accumulation System Rating :   7.5</MaxUnits>
    </Ects>
  </OfferedBy>
  <MarketingOverview Applicant="Y" Label="Marketing Course unit overview" Student="">
    <Content>&lt;p&gt;The course unit aims to provide a foundation for formal methods in software verification, software security, software engineering and computer science. Formal methods heavily rely on automated reasoning which will be the central focus of the course. It covers basic mathematical foundations and formalisms to model and reason about different aspects of complex systems and programs. In laboratory sessions students gain practical experience for the use of state-of-the art automated reasoning tools that are widely used for formal methods and verification of security protocols and programs.&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;Formal methods are widely used in the software and hardware industries in areas such as analysis, verification and security of software and hardware, but also play an important role in other areas of computer science such as knowledge engineering, AI and computational mathematics which require support from automated reasoning tools. Formal methods and automated reasoning tools are, for example, used in large software and hardware companies such as Microsoft and Intel for software and hardware analysis, synthesis and verification. An important part of the systems development processes concerns formalising and reasoning about the behaviour of the systems in order to verify the correctness of the behaviour. Also, in web and agent technologies such methods are used for the intelligent processing of ontologies, for decision making based on knowledge bases of structured data, and for formal specification and verification of web services. The motivation of the course is the introduction and study of a subset of the most important methods, techniques and tools used nowadays. These include propositional reasoners (SAT solvers), theory reasoners (SMT solvers) and first-order reasoners.&lt;/p&gt;&lt;p&gt;The course aims at providing an understanding of the foundation of propositional logic, first-order logic and important theories for modelling and reasoning specifying properties of programs. It covers practical and theoretical techniques and results that form the basis of resolution reasoning systems and the DPLL reasoning algorithm, which is used in SAT and SMT solvers. Verification and automated analysis of security protocols are discussed as important application domains.&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;The course unit aims to provide a foundation for formal methods in software verification, software security, software engineering and computer science. Formal methods heavily rely on automated reasoning which will be the central focus of the course. It covers basic mathematical foundations and formalisms to model and reason about different aspects of complex systems and programs. In laboratory sessions students gain practical experience for the use of state-of-the art automated reasoning tools that are widely used for formal methods and verification of security protocols and programs.&lt;/p&gt;</Content>
  </Aims>
  <LearningOutcomes Applicant="Y" Label="Learning outcomes" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;ILO 1: &lt;/strong&gt;Describe and compare approaches to modelling and representation of knowledge using precise statements in propositional logic and first-order logic. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2: &lt;/strong&gt;Describe and compare reasoning approaches underpinning modern formal methods systems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3: &lt;/strong&gt;Explain techniques that make such systems efficient and suitable to verify large pieces of software and solve difficult reasoning problems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4:&lt;/strong&gt; Apply such systems for solving a variety of reasoning and verification problems to ensure correct functioning of software/complex systems&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5: &lt;/strong&gt;Use a state-of-the art first-order reasoner to establish properties of relations and analyse a security protocol.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 6&lt;/strong&gt;: Use a state-of-the-art SAT/SMT solver to verify properties of data structures.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</Content>
  </LearningOutcomes>
  <Knowledge Applicant="Y" Label="Knowledge and understanding" Student="Y">
    <Content></Content>
  </Knowledge>
  <IntellectualSkills Applicant="Y" Label="Intellectual skills" Student="Y">
    <Content></Content>
  </IntellectualSkills>
  <PracticalSkills Applicant="Y" Label="Practical skills" Student="Y">
    <Content></Content>
  </PracticalSkills>
  <TransferableSkills Applicant="Y" Label="Transferable skills and personal qualities" Student="Y">
    <Content></Content>
  </TransferableSkills>
  <EmployabilitySkillsList Applicant="Y" Label="Employability skills" Student="Y">
    <Skill>
      <SkillId>Analytical skills</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Problem solving</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Research</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Written communication</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content>&lt;p&gt;- Introduction&lt;br&gt;&lt;br&gt;&lt;br&gt;- Propositional reasoning&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Language of propositional logic, semantics, truth tables&lt;/li&gt;&lt;li&gt;Satisfiability, validity, equivalence, decidability&lt;/li&gt;&lt;li&gt;Normal forms, CNF, clauses&lt;/li&gt;&lt;li&gt;Propositional resolution, redundancy elimination&lt;/li&gt;&lt;li&gt;DPLL and CDCL for SAT-solving&lt;/li&gt;&lt;li&gt;Logical modelling&lt;/li&gt;&lt;li&gt;Using SAT solver (demo &amp;amp; lab)&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;- General first-order reasoning&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Language of first-order logic, modelling&lt;/li&gt;&lt;li&gt;substitution, semantics&lt;/li&gt;&lt;li&gt;Normal forms, clauses&lt;/li&gt;&lt;li&gt;Herbrand interpretations&lt;/li&gt;&lt;li&gt;Soundness, literal &amp;amp; clause orderings, saturation&lt;/li&gt;&lt;li&gt;Unication for general resolution&lt;/li&gt;&lt;li&gt;Basic general resolution, ordering &amp;amp; selection refinements&lt;/li&gt;&lt;li&gt;Automated analysis of security protocols&lt;/li&gt;&lt;li&gt;Using SPASS (demo &amp;amp; lab)&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;- Reasoning modulo theories (SMT)&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Equality reasoning, theory of arrays, linear arithmetic, SMT algorithm&lt;/li&gt;&lt;li&gt;Property checking related to software&lt;/li&gt;&lt;li&gt;Using SMT solver (demo &amp;amp; lab)&lt;/li&gt;&lt;/ul&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;Delivery and learning are via a range of materials and sessions: video lectures, quizzes, flipped classroom sessions, drop-in sessions, feedback sessions and supervised practical laboratory sessions.&lt;/p&gt;&lt;p&gt;&lt;br&gt;Lecture notes are made available online. Together with the videos and the slides of the flipped classroom sessions they comprise the formal content of the course unit. The videos explain the material more informally with emphasis on key concepts, examples and exercises.&lt;/p&gt;&lt;p&gt;&lt;br&gt;The practical work involves learning to use and getting experience with current reasoners and systems used for program verification and analysis. These systems will be used in the Software Security course unit.&lt;/p&gt;</Content>
  </TeachingMethods>
  <AssessmentMethods Applicant="Y" Label="Assessment methods" Student="Y">
    <IntroText> </IntroText>
    <Method>
      <MethodId>0</MethodId>
      <MethodName>Other</MethodName>
      <MethodWeight>40%</MethodWeight>
    </Method>
    <Method>
      <MethodId>1</MethodId>
      <MethodName>Written exam</MethodName>
      <MethodWeight>60%</MethodWeight>
    </Method>
    <OtherDescription>&lt;p&gt;Exam: 60%&lt;/p&gt;&lt;p&gt;Practical Skills Assessment (Coursework): 40%&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</OtherDescription>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;p&gt;For assessed coursework there are face-to-face sessions with GTAs in which cohort-level feedback is provided on common mistakes along with marks.&lt;/p&gt;&lt;p&gt;Each practical assessment piece is checked, and face-to-face cohort level feedback is provided in feedback sessions along with marks.&lt;/p&gt;&lt;p&gt;Individual feedback is provided in feedback sessions on formative mini-projects.&lt;/p&gt;&lt;p&gt;For the exam cohort level feedback is given along with individual marks after marking and official exam board meetings.&lt;/p&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode>COMP63342</UnitCode>
      <UnitTitle>Software Security</UnitTitle>
      <RequirementType>Co-Requisite</RequirementType>
      <Description>Recommended</Description>
    </Requirement>
    <AdditionalRequirement></AdditionalRequirement>
  </RequirementsList>
  <AcademicPrograms Applicant="Y" Label="Academic programmes" Student="Y">
    <AcademicProgram>
      <Program></Program>
      <Plan></Plan>
      <Level></Level>
      <Requirement></Requirement>
    </AcademicProgram>
  </AcademicPrograms>
  <FreeChoice Applicant="Y" Label="Available as a free choice unit?" Student="Y">
    <Content>Y</Content>
  </FreeChoice>
  <Accreditation Applicant="Y" Label="Accreditation" Student="Y">
    <Content></Content>
  </Accreditation>
  <RecommendedReading Applicant="Y" Label="Recommended reading" Student="Y">
    <Content>&lt;p&gt;Mathematical Logic for Computer Science&lt;br&gt;Ben-Ari, Mordechai, 2012. Springer, London&lt;/p&gt;&lt;p&gt;The Calculus of Computation: Decision Procedures with Applications to Verification&lt;br&gt;Bradley, Aaron R. and Manna, Zohar, 2007. Springer, Berlin/Heidelberg&lt;/p&gt;&lt;p&gt;First-Order Logic and Automated Theorem Proving [electronic resource]&lt;br&gt;Fitting, Melvin. 1996. Springer New York.&lt;/p&gt;&lt;p&gt;Logic for Computer Scientists&lt;br&gt;Schöning, Uwe. 2008. Birkhäuser Boston&lt;/p&gt;&lt;p&gt;Deduction Systems&lt;br&gt;Socher-Ambrosius, Rolf. 1997. Springer New York.&lt;/p&gt;&lt;p&gt;Decision Procedures : An Algorithmic Point of View.&lt;br&gt;Kroening, Daniel. 2008. Springer Berlin Heidelberg.&amp;nbsp;&lt;/p&gt;</Content>
  </RecommendedReading>
  <StudyHours Applicant="Y" Label="Study hours" Student="Y">
    <IntroText> </IntroText>
    <ScheduledHours Applicant="Y" Label="Scheduled activity hours" Student="Y">
      <ActivityHours>
        <ActivityType>Assessment written exam</ActivityType>
        <Hours>2</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Demonstration</ActivityType>
        <Hours>2</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Lectures</ActivityType>
        <Hours>11</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>10</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Work based learning</ActivityType>
        <Hours>25</Hours>
      </ActivityHours>
    </ScheduledHours>
    <PlacementHours Applicant="Y" Label="Placement hours" Student="Y">
      <ActivityHours>
        <ActivityType></ActivityType>
        <Hours>0</Hours>
      </ActivityHours>
    </PlacementHours>
    <TotalHours Applicant="Y" Label="Independent study hours" Student="Y">
      <Hours>100</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;Timetabled activities:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Intro lecture: 1 hour&lt;/p&gt;&lt;p&gt;Flipped classroom: 10 hours&lt;/p&gt;&lt;p&gt;Practical lab sessions: 12 hours&lt;/p&gt;&lt;p&gt;Coursework drop-in sessions: 5 hours&lt;/p&gt;&lt;p&gt;Coursework feedback sessions: 5 hours&lt;/p&gt;&lt;p&gt;Exam revision Q&amp;amp;A session: 2 hours&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Asynchronous Activities:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Video content: 20 hours&lt;/p&gt;&lt;p&gt;Coursework: 30 hours&lt;/p&gt;&lt;p&gt;&lt;u&gt;More information regarding this Unit:&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This is a Mandatory course in Secure Software Engineering Theme and MSc in Cyber Security&lt;/li&gt;&lt;li&gt;Please contact the unit lead to get permission to do the unit if you are not a Comp Sci student/ unable to enrol onto the unit.&lt;/li&gt;&lt;/ul&gt;</Content>
  </Notes>
</CourseUnit>
