<?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>MATH20621</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Programming with Python</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 1</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>Christopher Johnson</Name>
      <Role>Unit coordinator</Role>
    </StaffMember>
  </StaffList>
  <OfferedBy Applicant="Y" Label="Offered by" Student="Y">
    <OrganisationList>
      <Organisation>
        <OrgName>Department of Mathematics</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 will focus on teaching basic programming mechanisms in Python and on writing programs based on basic mathematical algorithms, as well as creating algorithms from various problems&amp;#39; descriptions.&lt;/p&gt;&lt;p&gt;Most of the Python-specifc constructs will be avoided, to make students familiar with the concepts that they can easily apply to other programming environments they may encounter.&lt;/p&gt;&lt;p&gt;No prior computer programming knowledge is assumed.&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;The course will focus on teaching basic programming mechanisms in Python and on writing programs based on basic mathematical algorithms, as well as creating algorithms from various problems&amp;#39; descriptions.&lt;/p&gt;&lt;p&gt;Most of the Python-specifc constructs will be avoided, to make students familiar with the concepts that they can easily apply to other programming environments they may encounter.&lt;/p&gt;&lt;p&gt;No prior computer programming knowledge is assumed.&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;This course aims to introduce students to an algorithmic way of thinking and to basic programming concepts in Python, laying strong foundations for computer-aided problem solving applicable in the subsequent years of their degree and beyond.&lt;/p&gt;</Content>
  </Aims>
  <LearningOutcomes Applicant="Y" Label="Learning outcomes" Student="Y">
    <Content>&lt;p&gt;On successful completion of this course, students will be able to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Devise algorithms to solve simple problems and implement these algorithms in the Python programming language&lt;/li&gt;&lt;li&gt;Structure code clearly, using well-documented functions that react robustly to exceptional inputs&lt;/li&gt;&lt;li&gt;Identify and use appropriate Python data types and control flow structures&lt;/li&gt;&lt;li&gt;&lt;p&gt;Make use of Python modules to provide data structures and algorithms&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;/ul&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></SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content>&lt;ol&gt;	&lt;li&gt;		Introduction. Programs as computers&amp;#39; \cookbooks&amp;quot;. Compilers vs. pseudo-compilers. Python versions (no details, just the awareness that there are two which are somewhat incompatible) and IDEs (for Linux, Mac, Windows). Simple program (writing, running, testing in the chosen IDE (probably Anaconda)).&lt;/li&gt;	&lt;li&gt;		Basic input and output, variables, basic types in Python (numbers, strings; mention types in typed languages), value assignments, simple expressions (standard arithmetic operations, real and integer division, division remainder,. . . ). Boolean expressions, true and false. Comments and their importance.&lt;/li&gt;	&lt;li&gt;		Branching (if, if...elif...else). The concept of \doing nothing&amp;quot; (pass).&lt;/li&gt;	&lt;li&gt;		Loops (for and range, while). Nesting loops. Flow control (continue, break).&lt;/li&gt;	&lt;li&gt;		Recap of the above: simple algorithms (Euclid&amp;#39;s algorithm, \toying&amp;quot; with numbers&amp;#39; digits, divisibility, etc).&lt;/li&gt;	&lt;li&gt;		Subroutines (de ning, arguments, return values, documenting), reusing previously presented algorithms.&lt;/li&gt;	&lt;li&gt;		Lists (including multidimensional ones): concept, basic usage and operations (adding items, traversing, removing items), passing them to and from subroutines. More complex operations (sorting and searching).&lt;/li&gt;	&lt;li&gt;		Concept of complexity (when is one algorithm \better&amp;quot; than some other). Examples of simple algorithms highly improved by reduction of complexity.&lt;/li&gt;	&lt;li&gt;		Modules (loading them, introduction to some of the common ones). Brief introduction to the Python package ecosystem (NumPy, SciPy, SymPy, etc.).&lt;/li&gt;	&lt;li&gt;		Basics of testing and debugging. File I/O.&lt;/li&gt;&lt;/ol&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content></Content>
  </TeachingMethods>
  <AssessmentMethods Applicant="Y" Label="Assessment methods" Student="Y">
    <IntroText> </IntroText>
    <Method>
      <MethodId>2</MethodId>
      <MethodName>Written assignment (inc essay)</MethodName>
      <MethodWeight>40%</MethodWeight>
    </Method>
    <Method>
      <MethodId>8</MethodId>
      <MethodName>Practical skills assessment</MethodName>
      <MethodWeight>40%</MethodWeight>
    </Method>
    <Method>
      <MethodId>9</MethodId>
      <MethodName>Set exercise</MethodName>
      <MethodWeight>20%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;p&gt;Feedback tutorials will provide an opportunity for students&amp;#39; work to be discussed and provide feedback on their understanding.&amp;nbsp; Coursework or in-class tests (where applicable) also provide an opportunity for students to receive feedback.&amp;nbsp; Students can also get feedback on their understanding directly from the lecturer, for example during the lecturer&amp;#39;s office hour.&lt;/p&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode>PHYS20161</UnitCode>
      <UnitTitle>Introduction to Programming for Physicists</UnitTitle>
      <RequirementType>Anti-requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <Requirement>
      <UnitCode>PHYS10362</UnitCode>
      <UnitTitle>Introduction to Programming</UnitTitle>
      <RequirementType>Anti-requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <Requirement>
      <UnitCode>UCIL22212</UnitCode>
      <UnitTitle>Programming: What? Why? How?</UnitTitle>
      <RequirementType>Anti-requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <AdditionalRequirement>MATH20621 Pre &amp; Anti Requisites: Students cannot take MATH20621 if they have taken any of PHYS10362, PHYS20161 or UCIL22212.&lt;p&gt;This module is only open to students registered on degree programmes in the Department of Maths and some 3rd year Math/Physics students who meet the pre and anti-requisites.&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>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;A primer on scientific programming with Python&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Langtangen, Hans Petter, 1962- author.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Springer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2016&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ISBN: 9783662498873&lt;br&gt;&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>Lectures</ActivityType>
        <Hours>11</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>69</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content></Content>
  </Notes>
</CourseUnit>
