<?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>COMP16412</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Introduction to Programming 2</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 1</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Efthymios-Christos Kotselidis</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) ' First part HE study/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;This unit teaches students how to design and build software using object-oriented programming principles in Java. The course begins with programming fundamentals-how to structure code, make decisions, and repeat operations-before introducing the core concept of organising programmes around "objects" with their own data and behaviours. Students learn how to create blueprints for these objects, how to build relationships between different types of objects, and how to design code that can be easily modified and extended over time. As the course progresses, students work with Java's built-in tools for organising and managing collections of data, such as lists, queues, and maps, and learn to choose the right tool for different programming challenges. The latter portions cover modern Java features that make code more concise and expressive, as well as techniques for processing data efficiently using contemporary programming styles.&lt;/p&gt;&lt;p&gt;Beyond technical programming skills, this unit emphasises responsible and sustainable software development practices that are increasingly critical in the technology industry. Students examine real-world concerns, including software security and accessibility, reading current research on topics such as whether Al coding assistants lead developers to write less secure code, and how to design software that works well for users with diverse needs and abilities. The course addresses sustainability by teaching students to write efficient code that uses computational resources wisely,to design software architectures using diagrams that remain maintainable overrather than requiring costly rewrites. Students also learn to build graphical applications with interactive user interfaces and to handle multiple simultaneous operations within their programmes. Throughout the unit, students develop professional skills such as reading technical documentation, understanding visual software diagrams, writing clear code documentation, testing their code to prevent errors, and working on large projects-preparing them for collaborative software development in both academic and professional contexts.&amp;nbsp;&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;&lt;span style="font-size:14px;"&gt;This unit teaches students how to design and build software using object-oriented programming principles in Java. The course begins with programming fundamentals-how to structure code, make decisions, and repeat operations-before introducing the core concept of organising programmes around "objects" with their own data and behaviours. Students learn how to create blueprints for these objects, how to build relationships between different types of objects, and how to design code that can be easily modified and extended over time. As the course progresses, students work with Java's built-in tools for organising and managing collections of data, such as lists, queues, and maps, and learn to choose the right tool for different programming challenges. The latter portions cover modern Java features that make code more concise and expressive, as well as techniques for processing data efficiently using contemporary programming styles.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:14px;"&gt;Beyond technical programming skills, this unit emphasises responsible and sustainable software development practices that are increasingly critical in the technology industry. Students examine real-world concerns, including software security and accessibility, reading current research on topics such as whether Al coding assistants lead developers to write less secure code, and how to design software that works well for users with diverse needs and abilities. The course addresses sustainability by teaching students to write efficient code that uses computational resources wisely,to design software architectures using diagrams that remain maintainable overrather than requiring costly rewrites. Students also learn to build graphical applications with interactive user interfaces and to handle multiple simultaneous operations within their programmes. Throughout the unit, students develop professional skills such as reading technical documentation, understanding visual software diagrams, writing clear code documentation, testing their code to prevent errors, and working on large projects-preparing them for collaborative software development in both academic and professional contexts.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;&lt;span style="font-size:14px;"&gt;To specify, design, test, develop, deploy, debug and run programmes of a significant complexity using an object-oriented language (here, Java 21) and identify the strengths and weaknesses of the paradigm and the language.&amp;nbsp;&lt;/span&gt;&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;Evaluate and select appropriate data structures (ArrayList, Stack, Queue, Set, Map) and algorithms (sorting, searching, recursion) for specific programming contexts, justifying choices based on efficiency and suitability&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2: &lt;/strong&gt;Use Java types (primitive and reference), appropiate data structures, and core language features such as generics, collections, exception and error handling, file I/O operations.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3: &lt;/strong&gt;Synthesise programming knowledge in order to implement new requirments on-the-fly in large projects.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4: &lt;/strong&gt;Read and interpret technical documentation (Java API documentation, UML diagrams, academic papers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new programming concepts) and apply them effectively independently or in small workshop groups.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5: &lt;/strong&gt;Explain fundamental object oriented programming concepts including classess, objects, polymorphism, abstraction, and interfaces.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 6: &lt;/strong&gt;Use theoretical skills to work on a code base of significant complexity following a list of requirements and architecture akin to stakeholder requirements in industry.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 7:&lt;/strong&gt; Critically analyse research papers on the impact of AI on programming and learning, developing accessible and secure software, and generating sustainable software to reduce cost of maintenance of code bases.&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;span style="font-family:&amp;quot;Aptos&amp;quot;,sans-serif;font-size:12.0pt;mso-ansi-language:EN-GB;mso-bidi-font-family:Aptos;mso-bidi-language:AR-SA;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-fareast-language:EN-GB;"&gt;This unit teaches students how to design and build software using object-oriented programming principles in Java. The course begins with programming fundamentals-how to structure code, make decisions, and repeat operations-before introducing the core concept of organising programmes around "objects" with their own data and behaviours. Students learn how to create blueprints for these objects, how to build relationships between different types of objects, and how to design code that can be easily modified and extended over time. As the course progresses, students work with Java's built-in tools for organising and managing collections of data, such as lists, queues, and maps, and learn to choose the right tool for different programming challenges. The latter portions cover modern Java features that make code more concise and expressive, as well as techniques for processing data efficiently using contemporary programming styles.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:&amp;quot;Aptos&amp;quot;,sans-serif;font-size:12.0pt;mso-ansi-language:EN-GB;mso-bidi-font-family:Aptos;mso-bidi-language:AR-SA;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-fareast-language:EN-GB;"&gt;Beyond technical programming skills, this unit emphasises responsible and sustainable software development practices that are increasingly critical in the technology industry. Students examine real-world concerns, including software security and accessibility, reading current research on topics such as whether Al coding assistants lead developers to write less secure code, and how to design software that works well for users with diverse needs and abilities. The course addresses sustainability by teaching students to write efficient code that uses computational resources wisely,to design software architectures using diagrams that remain maintainable overrather than requiring costly rewrites. Students also learn to build graphical applications with interactive user interfaces and to handle multiple simultaneous operations within their programmes. Throughout the unit, students develop professional skills such as reading technical documentation, understanding visual software diagrams, writing clear code documentation, testing their code to prevent errors, and working on large projects-preparing them for collaborative software development in both academic and professional contexts.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;&lt;span style="font-family:&amp;quot;Aptos&amp;quot;,sans-serif;font-size:12.0pt;mso-ansi-language:EN-GB;mso-bidi-font-family:Aptos;mso-bidi-language:AR-SA;mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-fareast-language:EN-GB;"&gt;Asynchronous independent study material (e.g. videos, reading, online quizzes and formative coursework), group-based workshops, practical lab sessions, Q&amp;amp;A sessions. Activities are supported by academics and GTAs both in-person and through online forums.&lt;/span&gt;&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>8</MethodId>
      <MethodName>Practical skills assessment</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;p&gt;&lt;br&gt;Practical exam (Invigilated programming): 50%&lt;/p&gt;&lt;p&gt;Written Exam (Theoretical): 50%&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode>COMP16321</UnitCode>
      <UnitTitle>Introduction to Programming 1</UnitTitle>
      <RequirementType>Co-Requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <AdditionalRequirement>&lt;p&gt;COMP16321 is a co-requisite which means it must be taken with this unit.&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;Charatan, Quentin, author. (2019). &lt;i&gt;Java in two semesters: featuring JavaFX&lt;/i&gt;. Springer. ISBN:&lt;a href="https://www.librarysearch.manchester.ac.uk/discovery/search?query=isbn,contains,9783319994208&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; 9783319994208&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>Lectures</ActivityType>
        <Hours>12</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>36</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>
