<?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>COMP63342</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Software Security</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 2</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>Lucas Cordeiro</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;Software is subject to numerous forms of attack such as memory corruption, buffer overflows and injection; these flaws are often too complex or expressive to be manually detected by the software developer. Techniques and tools exist to prevent and detect software flaws, which are typically too hard to be manually found, e.g., modelling, code reviews, fuzzing, static and dynamic code analyses, program verification and code tainting.&lt;/p&gt;&lt;p&gt;This course unit introduces students to basic and advanced approaches to formally build verified trustworthy software systems, where trustworthy comprise five attributes: reliability, availability, safety, resilience and security.&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;Software is subject to numerous forms of attack such as memory corruption, buffer overflows and injection; these flaws are often too complex or expressive to be manually detected by the software developer. Techniques and tools exist to prevent and detect software flaws, which are typically too hard to be manually found, e.g., modelling, code reviews, fuzzing, static and dynamic code analyses, program verification and code tainting.&lt;/p&gt;&lt;p&gt;This course unit introduces students to basic and advanced approaches to formally build verified trustworthy software systems, where trustworthy comprise five attributes: reliability, availability, safety, resilience and security.&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;This course unit aims to familiarise students with basic and advanced approaches to formally building verified, trustworthy software systems. The course unit introduces methods, techniques, algorithms, and tools to prevent and detect software flaws that are typically too hard to find manually, such as modeling, code reviews, fuzzing, static and dynamic code analyses, program verification, and code tainting.&lt;/p&gt;&lt;p&gt;Software is subject to numerous forms of attack such as memory corruption, buffer overflows and injection; these flaws are often too complex or expressive to be manually detected by the software developer. Techniques and tools exist to prevent and detect software flaws, which are typically too hard to be manually found, e.g., modelling, code reviews, fuzzing, static and dynamic code analyses, program verification and code tainting.&lt;/p&gt;&lt;p&gt;This course unit introduces students to basic and advanced approaches to formally build verified trustworthy software systems, where trustworthy comprise five attributes: reliability, availability, safety, resilience and security.&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;Apply risk management frameworks in broader contexts, including organisational processes, decision-making, stakeholder communication, and the systematic integration of security considerations into complex systems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2: &lt;/strong&gt;Analyse and compare security properties to identify their relevance in specific development phases.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3: &lt;/strong&gt;Explain the foundational role of software vulnerabilities in cyber-attacks, analyse their impact on security, and apply key principles such as confidentiality, integrity, and availability to secure software development.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4: &lt;/strong&gt;Apply risk management processes and tools to identify, assess, and mitigate security risks throughout the software development lifecycle.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5: &lt;/strong&gt;Utilise industry-standard tools and frameworks, such as static and dynamic verification, to identify and mitigate security issues and simulate potential attack vectors in real-world scenarios to analyse their impact and improve software defences.&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></SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;Part I: Software Security Fundamentals&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Defining a Discipline&lt;/li&gt;&lt;li&gt;A Risk Management Framework&lt;/li&gt;&lt;li&gt;Vulnerability Assessment and Management&lt;/li&gt;&lt;li&gt;Overview on Traffic, Vulnerability and Malware Analysis&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;strong&gt;Part II: Software Security&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Code Inspection for Finding Security Vulnerabilities and Exposures (ref: Mitre’s CVE)&lt;/li&gt;&lt;li&gt;Architectural Risk Analysis&lt;/li&gt;&lt;li&gt;Penetration Testing, Concolic Testing, Fuzzing, Automated Test Generation&lt;/li&gt;&lt;li&gt;Model Checking, Abstract Interpretation, Symbolic Execution&lt;/li&gt;&lt;li&gt;Risk-Based Security Testing and Verification&lt;/li&gt;&lt;li&gt;Software Security Meets Security Operations&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br&gt;&lt;strong&gt;Part III: Software Security Grows Up&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Withstanding adversarial tactics and techniques defined in Mitre’s ATT&amp;amp;CK™ knowledge base&lt;/li&gt;&lt;li&gt;An Enterprise Software Security Program&lt;/li&gt;&lt;/ul&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;ul&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Lectures&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Workshops&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Tutorials&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Labs/Practicals&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</Content>
  </TeachingMethods>
  <AssessmentMethods Applicant="Y" Label="Assessment methods" Student="Y">
    <IntroText> </IntroText>
    <Method>
      <MethodId>1</MethodId>
      <MethodName>Written exam</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
    <Method>
      <MethodId>2</MethodId>
      <MethodName>Written assignment (inc essay)</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;ul&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Lectures&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Workshops&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Tutorials&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Labs/Practicals&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode></UnitCode>
      <UnitTitle></UnitTitle>
      <RequirementType></RequirementType>
      <Description></Description>
    </Requirement>
    <AdditionalRequirement>&lt;p style="font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; line-height: 1.5; text-size-adjust: 100%; font-size: 16px; margin: var(--universal-margin); color: rgb(17, 17, 17);"&gt;&lt;span style="font-size:14px;"&gt;Fundamental programming skills, including familiarity with C and Python 3. In more detail:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;For C, the student should at least know how pointers and dynamic memories work.&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;For Python, the student should know how to develop basic algorithms/data structures and interact with the host system.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; line-height: 1.5; text-size-adjust: 100%; font-size: 16px; margin: var(--universal-margin); color: rgb(17, 17, 17);"&gt;&lt;span style="font-size:14px;"&gt;Basic notions in Linux System Administration:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Create a web server.&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Understand the difference between user space and kernel space.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, sans-serif; line-height: 1.5; text-size-adjust: 100%; font-size: 16px; margin: var(--universal-margin); color: rgb(17, 17, 17);"&gt;&lt;span style="font-size:14px;"&gt;Some interest/knowledge of logic and modelling:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Understand propositional and first-order logic.&lt;/span&gt;&lt;/li&gt;	&lt;li&gt;		&lt;span style="font-size:14px;"&gt;Understand linear-time temporal logic.&lt;/span&gt;&lt;br /&gt;		&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;</AdditionalRequirement>
  </RequirementsList>
  <AcademicPrograms Applicant="Y" Label="Academic programmes" Student="Y">
    <AcademicProgram>
      <Program>MSc Adv Computer Science</Program>
      <Plan>MSc Adv Computer Science</Plan>
      <Level>PGDT Taught Component</Level>
      <Requirement>Optional</Requirement>
    </AcademicProgram>
    <AcademicProgram>
      <Program>MSc Adv Computer Science</Program>
      <Plan>MSc Artificial Intelligence</Plan>
      <Level>PGDT Taught Component</Level>
      <Requirement>Optional</Requirement>
    </AcademicProgram>
    <AcademicProgram>
      <Program>MSc Adv Computer Science</Program>
      <Plan>Computer Security</Plan>
      <Level>PGDT Taught Component</Level>
      <Requirement>Mandatory</Requirement>
    </AcademicProgram>
    <AcademicProgram>
      <Program>MSc Adv Computer Science</Program>
      <Plan>Data and Knowledge Management</Plan>
      <Level>PGDT Taught Component</Level>
      <Requirement>Optional</Requirement>
    </AcademicProgram>
    <AcademicProgram>
      <Program>MSc Adv Computer Science</Program>
      <Plan>Digital Biology</Plan>
      <Level>PGDT Taught Component</Level>
      <Requirement>Optional</Requirement>
    </AcademicProgram>
  </AcademicPrograms>
  <FreeChoice Applicant="Y" Label="Available as a free choice unit?" Student="Y">
    <Content>N</Content>
  </FreeChoice>
  <Accreditation Applicant="Y" Label="Accreditation" Student="Y">
    <Content></Content>
  </Accreditation>
  <RecommendedReading Applicant="Y" Label="Recommended reading" Student="Y">
    <Content>&lt;p&gt;Software Security: Building Security In&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gary McGraw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Addison Wesley&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: &lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9780321356703&amp;amp;search_scope=MyInst_and_CI&amp;amp;sortby=rank&amp;amp;vid=44MAN_INST:MU_NUI&amp;amp;lang=en&amp;amp;mode=advanced&amp;amp;offset=0" target="_blank"&gt;9780321356703&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The Art of Software Security Assessment: Identifying and Preventing Software Vulnerabilities &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Mark Dowd, John McDonald, Justin Schuh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Addison-Wesley — &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: &lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,0321444426&amp;amp;search_scope=MyInst_and_CI&amp;amp;sortby=rank&amp;amp;vid=44MAN_INST:MU_NUI&amp;amp;lang=en&amp;amp;mode=advanced&amp;amp;offset=0" target="_blank"&gt;0321444426&lt;/a&gt;&lt;br&gt;&lt;br&gt;The art of software testing &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Myers, Glenford J.,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;John Wiley &amp;amp; Sons&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2012&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: &lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9781118133132&amp;amp;search_scope=MyInst_and_CI&amp;amp;sortby=rank&amp;amp;vid=44MAN_INST:MU_NUI&amp;amp;lang=en&amp;amp;mode=advanced&amp;amp;offset=0" target="_blank"&gt;9781118133132&lt;/a&gt;&lt;br&gt;&lt;br&gt;Model checking &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Clarke, E. M.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIT Press&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1999&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: &lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,0262032708&amp;amp;search_scope=MyInst_and_CI&amp;amp;sortby=rank&amp;amp;vid=44MAN_INST:MU_NUI&amp;amp;lang=en&amp;amp;mode=advanced&amp;amp;offset=0" target="_blank"&gt;0262032708&lt;/a&gt;&lt;br&gt;&lt;br&gt;Model Checking&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Edmund M. Clarke Jr. et al&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIT presss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: &lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9780262038836&amp;amp;search_scope=MyInst_and_CI&amp;amp;sortby=rank&amp;amp;vid=44MAN_INST:MU_NUI&amp;amp;lang=en&amp;amp;mode=advanced&amp;amp;offset=0" target="_blank"&gt;9780262038836&lt;/a&gt;&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>Lectures</ActivityType>
        <Hours>20</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>20</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>108</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content></Content>
  </Notes>
</CourseUnit>
