<?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></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;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&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>
  </Aims>
  <LearningOutcomes Applicant="Y" Label="Learning outcomes" Student="Y">
    <Content>&lt;p&gt;1. Describe and compare approaches to modelling and representation of knowledge in logical form in propositional logic and first-order logic.&lt;br&gt;&lt;br&gt;2. Describe and compare approaches underpinning modern automated reasoning and verification systems.&amp;nbsp;&lt;br&gt;&lt;br&gt;3. Explain techniques that make such systems efficient and suitable to verify large pieces of software.&lt;br&gt;&lt;br&gt;4. Formalise and describe properties of relations, the specification of a program, a security protocol or constraints of a combinatorial problem.&amp;nbsp;&lt;/p&gt;&lt;p&gt;5. Solve a variety of reasoning problems in software verification and security protocol analysis.&lt;br&gt;&lt;br&gt;6. Use a state-of-the art first-order reasoner to establish properties of relations and analyse a security protocol.&amp;nbsp;&lt;br&gt;&lt;br&gt;7. Use a state-of-the-art SAT/SMT solver to verify properties of data structures.&lt;br&gt;&lt;br&gt;8. Independently study a chosen relevant topic which may involve contrasting different approaches to modelling and reasoning, applying reasoning approaches to a special fragment or evaluating an advanced reasoning technique.&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>50%</MethodWeight>
    </Method>
    <Method>
      <MethodId>1</MethodId>
      <MethodName>Written exam</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
    <OtherDescription>&lt;p&gt;Other:&lt;/p&gt;&lt;p&gt;Assessed coursework 35%&lt;/p&gt;&lt;p&gt;Assessed practical work 15%&lt;/p&gt;&lt;p&gt;Mini-Project (formative)&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;&lt;strong&gt;Mathematical Logic for Computer Science&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ben-Ari, Mordechai, 2012. Springer, London&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;strong&gt;The Calculus of Computation: Decision Procedures with Applications to Verification&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Bradley, Aaron R. and Manna, Zohar, 2007. Springer, Berlin/Heidelberg&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>
    </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>113</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content>&lt;p&gt;&lt;u&gt;Other non-listed Scheduled activities for Scheduled activity hours:&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Coursework drop-in sessions 5 hours&lt;/li&gt;&lt;li&gt;Coursework feedback sessions 5 hours&lt;/li&gt;&lt;li&gt;Exam revision Q&amp;amp;A Session 2 hours&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;u&gt;Additional information regarding Non-scheduled/Independent study hours:&lt;/u&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Video content 20 hours&lt;/li&gt;&lt;li&gt;Coursework 30 hours&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&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;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</Content>
  </Notes>
</CourseUnit>
