COMP20341: Software Engineering I

archived

Collaborative teaching of software engineering fundamentals to 2nd year students

Overview

I co-taught Software Engineering I from 2005-2008, contributing to a team-taught course that introduced 2nd year students to software engineering principles, processes, and practices.

Teaching Team

The course was delivered by a collaborative team:

  • S Embury - Requirements engineering
  • R Stevens - Design methodologies
  • J Sargeant - Testing and quality assurance
  • B Warboys - Process models
  • S Harper - User-centred design and HCI aspects

Course Content

Core Topics

Software Development Processes:

  • Waterfall, iterative, and agile methodologies
  • Process selection and adaptation
  • Project management basics
  • Team coordination

Requirements Engineering:

  • Stakeholder analysis
  • Requirements elicitation
  • Specification techniques
  • Requirements validation

Design:

  • Object-oriented design
  • Design patterns
  • UML modelling
  • Architecture fundamentals

Quality Assurance:

  • Testing strategies
  • Code review practices
  • Quality metrics
  • Debugging techniques

User-Centred Aspects (My contribution):

  • Usability requirements
  • Interface design principles
  • User feedback integration
  • Accessibility considerations

Teaching Approach

Team Teaching Benefits

The collaborative approach provided:

  • Diverse expertise - Each instructor brought specialized knowledge
  • Real-world perspective - Multiple viewpoints on software development
  • Industry connections - Team members’ various industry experiences
  • Integrated curriculum - Showed how different SE aspects connect

My Contribution

I focused on integrating HCI and user-centred design into the software engineering curriculum:

Key Topics:

  • Why usability matters in SE
  • User requirements vs system requirements
  • Prototyping for user feedback
  • Interface design in the development process
  • Accessibility as a quality attribute

Teaching Methods:

  • Case studies of UI failures and successes
  • Live critique of existing systems
  • Connecting UX to software quality
  • Guest speakers from industry

Group Project

A significant component was a semester-long group software project:

Project Structure:

  • Teams of 4-6 students
  • Real or realistic client requirements
  • Multiple iterations with milestones
  • Peer review components
  • Final presentation and demonstration

My Role:

  • Advising on user interface aspects
  • Reviewing usability of prototypes
  • Assessing user documentation
  • Evaluating presentation effectiveness

Student Cohort

Large Scale Delivery

With 130-240 students, challenges included:

  • Coordinating multiple teaching team members
  • Consistent marking across sections
  • Managing numerous project teams
  • Scheduling presentations

Team Dynamics

Students learned to work in teams:

  • Conflict resolution
  • Task allocation
  • Meeting management
  • Collaborative development

Pedagogical Approach

Integration of HCI

My contribution integrated user-centred thinking throughout:

Not a separate topic, but woven through:

  • Requirements: capturing user needs
  • Design: interface design patterns
  • Testing: usability testing
  • Process: user feedback loops

This approach demonstrated that UX isn’t separate from software engineering – it’s integral to building good software.

Real-World Context

Used authentic examples:

  • Open source projects
  • Commercial software case studies
  • Failed projects and post-mortems
  • Industry guest speakers

Challenges

Coordination

Challenge: Aligning 5 instructors’ teaching styles Solution:

  • Regular teaching team meetings
  • Shared slide templates
  • Consistent assessment criteria
  • Collaborative marking

Project Supervision

Challenge: Monitoring 30-40 project teams Solution:

  • Milestone-based check-ins
  • Project management tools
  • GTA support for oversight
  • Clear deliverable expectations

Integrating HCI

Challenge: Making UX relevant to SE students Solution:

  • Emphasize software quality aspects
  • Show impact on project success/failure
  • Connect to requirements and testing
  • Demonstrate industry demand for these skills

Evolution

Over the three years, the course evolved:

2005-2006: Initial integration

  • Finding my place in team teaching
  • Developing HCI-focused materials
  • Establishing assessment approach

2006-2007: Refinement

  • Better integration across topics
  • Improved project structure
  • Enhanced guest speaker program

2007-2008: Mature delivery

  • Streamlined coordination
  • Polished materials
  • Strong student outcomes

Outcomes

Students who completed the course demonstrated:

  • Understanding of SE processes
  • Ability to work in development teams
  • Practical project experience
  • Appreciation for user-centred design
  • Realistic view of software development challenges

Reflections

Team Teaching

The collaborative teaching approach had significant benefits:

Advantages:

  • Students exposed to multiple perspectives
  • Instructors learned from each other
  • Authentic representation of SE practice
  • Shared workload

Challenges:

  • Coordination overhead
  • Ensuring consistency
  • Balancing different teaching styles
  • Student confusion about who to contact

HCI Integration

Bringing user-centred design into an SE course was valuable:

  • Students saw UX as integral, not optional
  • Better understanding of software quality
  • Prepared students for industry expectations
  • Foundation for later UX specialization

Impact on Later Work

This experience influenced my subsequent COMP33511 (User Experience) course:

  • Showed demand for UX teaching
  • Identified gaps in student knowledge
  • Developed teaching materials I later expanded
  • Created connections for dedicated UX course

Legacy

While I stopped teaching this course in 2008, the integration of HCI perspectives into software engineering education continues to be important:

Lasting Impact:

  • Demonstrated value of UX in SE curriculum
  • Created teaching materials used by successors
  • Established HCI as part of SE at Manchester
  • Led to creation of standalone UX course (COMP33511)

Conclusion

COMP20341 Software Engineering I represented an important collaborative teaching experience during 2005-2008.

The team teaching approach provided students with diverse expertise and perspectives, while my specific contribution ensured that user-centred design was integrated throughout the software engineering curriculum rather than treated as a separate topic.

This experience served as a foundation for developing COMP33511 (User Experience) as a dedicated course, demonstrating the value and student demand for comprehensive HCI teaching in the Computer Science programme.

The collaborative model, while challenging to coordinate, effectively represented the multidisciplinary nature of software engineering and prepared students for the team-based reality of professional software development.