COMP20341: Software Engineering I
archivedCollaborative 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.