<?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>COMP23412</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Software Engineering 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 2</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Duncan Hull</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;This course prepares you to build interactive, real-world web applications using modern development frameworks and team-based agile practices. You will work in a simulated software company, with weekly requirements from ‘customers’ (your lecturers) that range from precise to deliberately ambiguous – just like the real world.&lt;/p&gt;&lt;p&gt;Working in teams, you will learn to break down requirements, clarify ambiguity through customer engagement, and deliver high-quality software through continuous integration and testing. Along the way, you will develop fluency in an industry-standard framework, navigating documentation and architectural patterns to solve evolving challenges.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;What you will gain:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Real-world experience in team-based software engineering.&lt;/li&gt;&lt;li&gt;Confidence working with a modern web development framework.&lt;/li&gt;&lt;li&gt;Skills in requirements analysis, rapid learning, and iterative development.&lt;/li&gt;&lt;li&gt;The ability to build and test usable, robust web applications.&lt;/li&gt;&lt;li&gt;Hands-on experience working with APIs – both consuming and creating them.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You will leave the course ready to hit the ground running in a professional development team.&lt;/p&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;To achieve the course goals, we set the following scenario: academics are the customers and students in teams are deployed within a company to complete a project in a short period of time. The team receives new requirements on a weekly basis, often ambiguous (so they must be clarified in conversations with the customers), other times specific.&lt;/p&gt;&lt;p&gt;The dynamics are about collaborating in a team to distribute weekly issues derived from the customers' requirements and integrate them once they are implemented. Teams are expected to continuously engage with the customers to address ambiguities of the requirements.&lt;/p&gt;&lt;p&gt;The tools of the trade means students learn to use a state-of-the-art development framework and IDEs. Since students are unfamiliar with the framework, they will have to develop the skills to learn it quickly by grasping the underlying architectural interactions of the framework, the complexities it removes and prioritising those aspects that will enable addressing the weekly requirements.&lt;/p&gt;&lt;p&gt;The practices aspect is reinforced through a strong emphasis on testing to ensure expectations are met and by applying user interface guidelines.&lt;/p&gt;&lt;p&gt;By the end of the course unit, students will be able to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Understand and break down requirements.&lt;/li&gt;&lt;li&gt;Navigate documentation of the framework and examples to infer their applicability.&lt;/li&gt;&lt;li&gt;Build a web application using a state-of-the-art development framework.&lt;/li&gt;&lt;li&gt;Implement a robust architecture for a web application.&lt;/li&gt;&lt;li&gt;Work in a team to deliver a new software product.&lt;/li&gt;&lt;li&gt;Make sure the software is usable.&lt;/li&gt;&lt;li&gt;Ensure acceptance tests are met through unit and integration tests.&lt;/li&gt;&lt;li&gt;Work with external APIs and develop an API to be used by third parties.&lt;/li&gt;&lt;/ul&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;This course unit simulates the development of an enterprise web application using a state-of-the-art industrial framework. Consequently, it requires a quick familiarisation with a new framework. It involves collaborating in a team to distribute weekly issues derived from the customers' requirements and integrate them once they are implemented and automatically tested to ensure expectations are met. By the end of the course unit, students will be able to: &amp;nbsp;i) Work in a team to deliver a new software product. ii) Implement a robust architecture for a web application; iii) Understand and break down requirements; iv) Ensure acceptance tests are met through unit and integration tests; v) Work with external APIs and develop an API to be used by third parties.&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;Design data models efficiently represent entities and relationships within a software system&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2:&lt;/strong&gt; Use third party libraries to incorporate functionalities to the web application.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3: &lt;/strong&gt;Use and develop REST APIs to provide common functionality to multiple software projects&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4:&lt;/strong&gt; Derive unit and integration tests from acceptance tests to ensure a system meets specifications and is robust against regression&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5:&lt;/strong&gt; Apply user interface guidelines when designing web applications.&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>Group/team working</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Innovation/creativity</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Leadership</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Project management</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Problem solving</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
    <Skill>
      <SkillId>Research</SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content>&lt;p&gt;In this course unit, students work in teams to build their own web applications, with a focus on architecture, planning, and meeting requirements through extensive testing. Students will get to grips with the Model-View-Controller architecture through the Spring web framework, integrating functionality from Mastodon and Mapbox maps, focusing on and developing their own API. The covered topics are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Introduction to the MVC paradigm. Mapping it to a web framework&lt;/li&gt;&lt;li&gt;User interface guidelines&lt;/li&gt;&lt;li&gt;Data modeling&lt;/li&gt;&lt;li&gt;Web application security and privacy&lt;/li&gt;&lt;li&gt;Specification by Example&lt;/li&gt;&lt;li&gt;Testing Functionality in Isolation&lt;/li&gt;&lt;li&gt;Providing a REST API&lt;/li&gt;&lt;li&gt;Using External APIs&lt;/li&gt;&lt;li&gt;Integrating External Services&lt;/li&gt;&lt;/ul&gt;</Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;The &lt;strong&gt;asynchronous online lectures&lt;/strong&gt; are delivered weekly and are the first theoretical contact with the week's topic. There is a dedicated forum to discuss any questions from the lecture materials. Some weeks include &lt;strong&gt;examinable readings&lt;/strong&gt;, including scientific articles and blog posts on the weekly topics.&lt;strong&gt; The labs &lt;/strong&gt;are structured in three stages and take place every week:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Stage 1&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In week 1 and 2, students work individually. In week 1, they get the first contact with an industrial IDE and learn how to navigate, build, run and test an existing codebase. In week 2, students learn the MVC design paradigm and the implementation that Spring makes of it. To become familiarised with the framework, students are guided by a heavily scripted lab manual that follows the test-driven development paradigm. There is academic and GTA support to troubleshoot and to provide pedagogical explanations of the choices to be made and the solutions.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Stage 2&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Students get in teams of 6-8 members and receive new requirements every week to work on the team coursework. These requirements are typically related to the week’s theoretical topic. Students must derive issues from the requirements, populate the distributed version control system with issues, distribute them, and integrate them after completion. This typically happens between weeks 3 and 10. We closely monitor team performance and workload distribution with GitLab analytics.&lt;/p&gt;&lt;p&gt;We run two checkpoints to ensure students are working according to plan and the distribution of work is fair according to hard data retrieved from GitLab analytics. Students not contributing receive a penalty. There is academic and GTA support to provide continuous feedback, troubleshoot and provide pedagogical explanations for the choices to be made and the debugging strategies to follow.&lt;/p&gt;&lt;p&gt;The&lt;strong&gt; team study sessions&lt;/strong&gt; run along Stage 2 and consist of an extra hour to carry on working on the week’s requirements. There is academic and GTA support during these sessions.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Stage 3&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;After submitting their coursework, we run a project showcase in week 12. GTAs and academics run acceptance tests against their project and provide face-to-face feedback on the marks achieved and lost. Teams anonymously nominate the best team members in a poll to award their contributions through extra marks.&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>6</MethodId>
      <MethodName>Project output (not diss/n)</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;ul&gt;&lt;li&gt;Individual labs: Formative feedback during the week lab in weeks 1 and 2.&lt;/li&gt;&lt;li&gt;Team coursework: team-level formative face to face feedback between weeks 2-10.&lt;/li&gt;&lt;li&gt;Team-level summative face to face feedback at the showcase taking place on week 12.&lt;/li&gt;&lt;li&gt;Exam: Cohort-level feedback after marking&lt;/li&gt;&lt;/ul&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode>COMP23311</UnitCode>
      <UnitTitle>Software Engineering 1</UnitTitle>
      <RequirementType>Pre-Requisite</RequirementType>
      <Description>Compulsory</Description>
    </Requirement>
    <AdditionalRequirement>Students who are not from the School of Computer Science must have permission from both Computer Science and their home School to enrol.</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;The examinable articles are introduced during the course.&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>Demonstration</ActivityType>
        <Hours>2</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Lectures</ActivityType>
        <Hours>10</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Practical classes &amp; workshops</ActivityType>
        <Hours>64</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Supervised time in studio/wksp</ActivityType>
        <Hours>4</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>20</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14px;"&gt;Course unit materials&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://studentnet.cs.manchester.ac.uk/ugt/syllabus.php" target="_blank"&gt;Links to course unit teaching materials&lt;/a&gt;&amp;nbsp;can be found on the School of Computer Science website for current students.&lt;/p&gt;</Content>
  </Notes>
</CourseUnit>
