<?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>EEEN11202</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Programming and Software Engineering</Title>
  </UnitTitle>
  <MaxUnits Applicant="Y" Label="Credit rating" Student="Y">
    <Units>20</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 1</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Alex Casson</Name>
      <Role>Unit coordinator</Role>
    </StaffMember>
  </StaffList>
  <OfferedBy Applicant="Y" Label="Offered by" Student="Y">
    <OrganisationList>
      <Organisation>
        <OrgName>Department of Electrical &amp; Electronic Engineering</OrgName>
      </Organisation>
    </OrganisationList>
    <GroupList>
      <Group>
        <GroupName></GroupName>
      </Group>
    </GroupList>
    <FheqLevels>
      <FheqLevel>
        <LevelNumber>1</LevelNumber>
        <LevelName>FHEQ level (Framework for Higher Education Qualifications) ' Undefined ' </LevelName>
      </FheqLevel>
    </FheqLevels>
    <Ects>
      <MaxUnits>European Credit Transfer &amp; Accumulation System Rating :   10.0</MaxUnits>
    </Ects>
  </OfferedBy>
  <MarketingOverview Applicant="Y" Label="Marketing Course unit overview" Student="">
    <Content>&lt;p&gt;&lt;strong&gt;This unit will cover the following:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. Introduction and motivation (including considering factors such as sustainability, risk, security, and equality/diversity/inclusion in programming).&lt;/p&gt;&lt;p&gt;2. Overview of major operating systems (e.g. Windows, macOS, Linux, RTOS).&lt;/p&gt;&lt;p&gt;3. Software engineering techniques (e.g. integrated development environments, version control, software lifecycle, debugging, unit testing).&lt;/p&gt;&lt;p&gt;4. General automation of computer tasks (e.g. shell scripting).&lt;/p&gt;&lt;p&gt;5. Core programming concepts (e.g. variables, if statements, loops; illustrated in Python).&lt;/p&gt;&lt;p&gt;6. Computer hardware and software concepts for programmers (e.g. memory addressing, heap and stack memory, data types, number formats, ASCII and UFT-8).&lt;/p&gt;&lt;p&gt;7. Practice using interpreted languages, including using standard packages and performing data visualization (e.g. via Python, Numpy, Scipy, Pandas, Matplotlib).&lt;/p&gt;&lt;p&gt;8. Practice using compiled high-performance languages (e.g. Rust).&lt;/p&gt;&lt;p&gt;9. Awareness of other compiled high-performance languages (e.g. C/C++).&lt;/p&gt;&lt;p&gt;10. Overview of coding for problem solving: common algorithms and high performance computing concepts.&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;This unit will cover the following:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. Introduction and motivation (including considering factors such as sustainability, risk, security, and equality/diversity/inclusion in programming).&lt;/p&gt;&lt;p&gt;2. Overview of major operating systems (e.g. Windows, macOS, Linux, RTOS).&lt;/p&gt;&lt;p&gt;3. Software engineering techniques (e.g. integrated development environments, version control, software lifecycle, debugging, unit testing).&lt;/p&gt;&lt;p&gt;4. General automation of computer tasks (e.g. shell scripting).&lt;/p&gt;&lt;p&gt;5. Core programming concepts (e.g. variables, if statements, loops; illustrated in Python).&lt;/p&gt;&lt;p&gt;6. Computer hardware and software concepts for programmers (e.g. memory addressing, heap and stack memory, data types, number formats, ASCII and UFT-8).&lt;/p&gt;&lt;p&gt;7. Practice using interpreted languages, including using standard packages and performing data visualization (e.g. via Python, Numpy, Scipy, Pandas, Matplotlib).&lt;/p&gt;&lt;p&gt;8. Practice using compiled high-performance languages (e.g. Rust).&lt;/p&gt;&lt;p&gt;9. Awareness of other compiled high-performance languages (e.g. C/C++).&lt;/p&gt;&lt;p&gt;10. Overview of coding for problem solving: common algorithms and high performance computing concepts.&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;This unit aims to provide students with an introduction to programming computer systems. It will provide an understanding of software development tools, and hands of experience of coding simple programs to build practical skills. This will give awareness of different types of programming approach (interpreted, procedural, and object orientated languages), and an introduction to coding for problem solving and creating algorithms. The unit focuses on the programming of desktop/laptop class devices, with some consideration of high performance computing (whether for high-spec computers, or embedded/single-board computer systems).&lt;/p&gt;</Content>
  </Aims>
  <LearningOutcomes Applicant="Y" Label="Learning outcomes" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;On the successful completion of the course, students will be able to:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ILO 1: Explain the need for, and importance of, programming, including why higher performance code may be needed and how this can be achieved. This includes an awareness of factors such as sustainability and security which may affect program design and implementation. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 2: Demonstrate an awareness of the hardware and software in a computer system and how to program a desktop/laptop type device. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 3: Explain the software development process, from requirements capture to long-term support, including the importance of documentation. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 4: Use standard development tools (e.g. integrated development environments and version control) for writing and debugging software. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 5: Apply standard programming techniques (e.g. if statements, loops) in different programming languages. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 6: Test developed software to give evidence that the code is working and is functionally correct. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 7: Perform data visualization using standard libraries. (Developed and Assessed)&lt;/p&gt;&lt;p&gt;ILO 8: Work individually to translate a given descriptive problem or algorithm into program code using appropriate programming elements, techniques and data structures. (Developed and Assessed)&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></Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;Large group two-hour lectures are held weekly to cover key concepts and worked examples. Lecture material is provided electronically via the web (web page based lecture notes).&lt;/p&gt;&lt;p&gt;Additional brief e-learning videos are provided to support the understanding of key concepts.&lt;/p&gt;&lt;p&gt;Two two-hour laboratory sessions are conducted during most of the teaching weeks (10 out of 12) in a computer cluster, with the support of Teaching Assistants.&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>3</MethodId>
      <MethodName>Report</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;Invigilated Closed-Book Online Exam:&lt;/strong&gt; Standard exam feedback provided after the exam board.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Lab-based Coursework:&lt;/strong&gt; Live in-lab feedback by teaching assistants. Automated feedback from students uploading code samples to an online marking system. 10 assignments in total, one per week but with a single overall deadline. Feedback is provided immediately upon submission of work.&amp;nbsp;&lt;/p&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode></UnitCode>
      <UnitTitle></UnitTitle>
      <RequirementType></RequirementType>
      <Description></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>N</Content>
  </FreeChoice>
  <Accreditation Applicant="Y" Label="Accreditation" Student="Y">
    <Content></Content>
  </Accreditation>
  <RecommendedReading Applicant="Y" Label="Recommended reading" Student="Y">
    <Content>&lt;ul&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/Python-Distilled-by-David-M-Beazley/9780134173276"&gt;https://blackwells.co.uk/bookshop/product/Python-Distilled-by-David-M-Beazley/9780134173276&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/Automate-the-Boring-Stuff-With-Python-by-Al-Sweigart/9781593279929"&gt;https://blackwells.co.uk/bookshop/product/Automate-the-Boring-Stuff-With-Python-by-Al-Sweigart/9781593279929&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/Python-Crash-Course-by-Eric-Matthes/9781718502703"&gt;https://blackwells.co.uk/bookshop/product/Python-Crash-Course-by-Eric-Matthes/9781718502703&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/Programming-Rust-by-Jim-Blandy-Jason-Orendorff-Leonora-F-S-Tindall-Jim-Blandy/9781492052593"&gt;https://blackwells.co.uk/bookshop/product/Programming-Rust-by-Jim-Blandy-Jason-Orendorff-Leonora-F-S-Tindall-Jim-Blandy/9781492052593&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/The-Rust-Programming-Language-by-Steve-Klabnik-Carol-Nichols/9781718503106"&gt;https://blackwells.co.uk/bookshop/product/The-Rust-Programming-Language-by-Steve-Klabnik-Carol-Nichols/9781718503106&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://blackwells.co.uk/bookshop/product/Rust-for-Rustaceans-by-Jon-Gjengset/9781718501850"&gt;https://blackwells.co.uk/bookshop/product/Rust-for-Rustaceans-by-Jon-Gjengset/9781718501850&lt;/a&gt;&lt;/li&gt;&lt;li&gt;D. Thomas and A. Hunt, "The pragmatic programmer," 2nd edition, Addison-Wesley, Boston, 2019.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;</Content>
  </RecommendedReading>
  <StudyHours Applicant="Y" Label="Study hours" Student="Y">
    <IntroText> </IntroText>
    <ScheduledHours Applicant="Y" Label="Scheduled activity hours" Student="Y">
      <ActivityHours>
        <ActivityType>Lectures</ActivityType>
        <Hours>26</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>40</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>134</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content></Content>
  </Notes>
</CourseUnit>
