<?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>COMP22712</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Microcontrollers</Title>
  </UnitTitle>
  <MaxUnits Applicant="Y" Label="Credit rating" Student="Y">
    <Units>10</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>Undergraduate</Value>
  </AcademicCareer>
  <UnitLevel Applicant="Y" Label="Unit level" Student="Y">
    <Level>Level 2</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Pavlos Petoumenos</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) ' Middle part of Bachelors ' </LevelName>
      </FheqLevel>
    </FheqLevels>
    <Ects>
      <MaxUnits>European Credit Transfer &amp; Accumulation System Rating :   5.0</MaxUnits>
    </Ects>
  </OfferedBy>
  <MarketingOverview Applicant="Y" Label="Marketing Course unit overview" Student="">
    <Content>&lt;p&gt;The course unit is a strong practical reinforcement of the software/hardware interface. The key themes we cover in this unit are:&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Efficient low-level programming in RISC-V assembly&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Controlling hardware devices through software&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Developing applications with both hardware and software components&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Processor support for hardware-software communication&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System software design&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Low-level debugging and testing&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reading, understanding, and using hardware technical documentation&lt;/p&gt;&lt;p&gt;This course unit is focused on practical laboratory work around our custom-designed development boards, which were developed in-house for this unit. Completing this course unit will give you a good understanding of low-level software, hardware-software co-design, and embedding programming, allowing you to compete for roles not normally open to most programmers.&amp;nbsp;&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;The course unit is a strong practical reinforcement of the software/hardware interface. The key themes we cover in this unit are:&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Efficient low-level programming in RISC-V assembly&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Controlling hardware devices through software&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Developing applications with both hardware and software components&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Processor support for hardware-software communication&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System software design&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Low-level debugging and testing&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reading, understanding, and using hardware technical documentation&lt;/p&gt;&lt;p&gt;This course unit is focused on practical laboratory work around our custom-designed development boards, which were developed in-house for this unit. Completing this course unit will give you a good understanding of low-level software, hardware-software co-design, and embedding programming, allowing you to compete for roles not normally open to most programmers.&amp;nbsp;&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;This course aims to familiarise students with the use of microprocessors for simple control and interfacing applications. This includes building modular low-level software, separating user and operating system tasks, and hardware-software interfacing.&amp;nbsp;&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;explain in detail how von Neumann architectures work and apply this understanding on developing efficient low-level code&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2:&lt;/strong&gt; customise and modify input/output hardware devices to develop resource-efficient applications&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3:&lt;/strong&gt; design and build appropriate software interfaces connecting input/output devices with an embedded controller&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4:&lt;/strong&gt; employ hardware interrupts to design applications that use their hardware resources more efficiently&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5:&lt;/strong&gt; design and develop well-structured large-scale embedded programs&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>Innovation/creativity</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Problem solving</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Other</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content>&lt;p&gt;The course unit is a strong practical reinforcement of the software/hardware interface. The key themes we cover in this unit are:&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Efficient low-level programming in RISC-V assembly&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Controlling hardware devices through software&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Developing applications with both hardware and software components&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Processor support for hardware-software communication&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System software design&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Low-level debugging and testing&lt;/p&gt;&lt;p&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reading, understanding, and using hardware technical documentation&lt;/p&gt;&lt;p&gt;This course unit is focused on practical laboratory work around our custom-designed development boards, which were developed in-house for this unit. Completing this course unit will give you a good understanding of low-level software, hardware-software co-design, and embedding programming, allowing you to compete for roles not normally open to most programmers.&amp;nbsp;&lt;/p&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14px;"&gt;Lectures&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;No formal lectures&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:14px;"&gt;Laboratories&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;44 hours in total, 22 2-hour sessions&lt;/p&gt;</Content>
  </TeachingMethods>
  <AssessmentMethods Applicant="Y" Label="Assessment methods" Student="Y">
    <IntroText> </IntroText>
    <Method>
      <MethodId>8</MethodId>
      <MethodName>Practical skills assessment</MethodName>
      <MethodWeight>100%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>Direct verbal feedback and advice in scheduled laboratory sessions.&lt;br /&gt;&lt;br /&gt;'Automatic' feedback from tools seeing exercises work/fail.&lt;br /&gt;&lt;br /&gt;Written feedback by annotating listings from submitted exercises.</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode>COMP15111</UnitCode>
      <UnitTitle>Fundamentals of Computer Architecture</UnitTitle>
      <RequirementType>Pre-Requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <AdditionalRequirement>COMP15111 is a pre-requisite.&lt;p&gt;COMP15111 is a pre-requisite.&lt;/p&gt;</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;ol&gt;&lt;li&gt;Hohl, William, author. (2014). &lt;i&gt;ARM assembly language: fundamentals and techniques&lt;/i&gt;. CRC Press. ISBN:&lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9781482229882&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; 9781482229882&lt;/a&gt;&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Gibson, J. R. (2007).&lt;i&gt; ARM assembly language: an introduction&lt;/i&gt;. Lulu. ISBN:&lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9781847536969&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; 9781847536969&lt;/a&gt;&lt;br&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Sloss, Andrew N. (2004). &lt;i&gt;ARM system developer's guide: designing and optimizing system software&lt;/i&gt;. Elsevier/ Morgan Kaufman. ISBN:&lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9780080490496&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; 9780080490496&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</Content>
  </RecommendedReading>
  <StudyHours Applicant="Y" Label="Study hours" Student="Y">
    <IntroText> </IntroText>
    <ScheduledHours Applicant="Y" Label="Scheduled activity hours" Student="Y">
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>48</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>52</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content></Content>
  </Notes>
</CourseUnit>
