Skip to main content

Software Engineering Methods (SENG301)

2 min read
#Current

This is the second course on software engineering after students learned about more classical development processes, software modelling and object orientation. This lecture-based course is composed by two distinct parts. I share the duty with another colleague and I mainly focus on the software development aspects (e.g., processes, team work, quality assessment). The first half is about teaching the Agile Software Development philosophy, un-teaching it and re-teaching it again. My colleague focuses on (object oriented) implementation aspects such as design patterns and advanced OO principles (e.g., Liskov, contracts).

In my first half of the course, I teach about:

  • The Agile manifesto, its principles and how these should shape a particular software development process.

  • The Scrum software development method, its roles, events and values. Students play with the method in immersive tutorials where they build a city out of craft paper over multiple short sprints.

  • Continuous integration and deployment, including automated acceptance testing (using Cucumber), staged testing, proper versioning and how to ensure the quality of a product (e.g., branching, code review, mocking).

  • A series of introductions to work ethics, resilience engineering, user experience (including basic UI design principles) and knowledge management.

The course material also includes weekly readings from grey literature sources (e.g., blogs) to complement the course material with an industrial touch. More details available on the official course page.