School of Computer Science Intranet
COMP33711: Agile Software Engineering
Taught by: Suzanne M. Embury.
Current students can find lecture notes, self-tests, revision resources, coursework details and sample exam materials on the Moodle site for this course unit.
For details of the topics covered, plus the assessment of the course unit, see the syllabus.
"We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more."
This is the text of the Agile Manifesto, published in 2001 to describe the core values behind what was then a radically new approach to software development. Its authors were a group of experienced software developers who were becoming increasingly disillusioned with traditional methods of software engineering.
Many of the ideas they proposed were initially dismissed as bizarre and undisciplined, a return to the "hacking" style of development. But agile approaches to software development are increasingly being accepted as mainstream, with leading development organisations rushing to establish their agile credentials. And agile software engineering actually requires a great deal of discipline on behalf of team members. It aims to put control back into the hands of clients and coders, while insisting on the highest standards of code quality and a continual focus on delivering real business value for the client.
In this course unit, we introduce you to some of the basic concepts behind agile software engineering, plus the agile technologies that can provide their foundation.
Why take this course unit?
- If you love programming but hate software engineering, take this course unit to learn about a way of building large-scale systems in teams that cuts out the boring bureaucracy and puts fun and engagement right back at the centre of the process.
- If you're thinking of a career in agile development, the
course unit will
give a good grounding in agile concepts, plus experience of
applying some key agile techniques in practice. Check out
the latest Job Trends figures for demand for agile skills
- If you're planning to apply for posts in conventional software engineering teams, the course unit will provide interview material, and help you develop your abilities to analyse the strengths and weaknesses of any software engineering technique, agile or not.
- If you're interested in the development of ideas in the discipline of software engineering, this course unit provides plenty of opportunities to discuss the topic from an academic as well as a practical point of view.
Approach to Teaching and Learning
Many of the concepts in agile software engineering can seem counter-intuitive when first encountered - especially if that first encounter takes place in the dry setting of a lecture. The values and practices espoused by agile software engineers need to be experienced to be appreciated. The agile community has squared up to this challenge, and has developed a number of games and hands-on activities to help to convey the key concepts more successfully than by passive listening or reading.
We make use of a range of these games within this course unit, as fits the topic under discussion. You can see pictures of students from previous years playing some of these in the pictures on the left hand side of this web page. Lectures are grouped into a single 2 hour session per week, and typically involve a mixture of lecturing, discussions, group activities and game playing. We also involve agile practitioners from industry in the course unit, to give guest lectures and to demonstrate some agile practices for us. We also encourage students with agile experience of their own (perhaps from an industrial placement year) to contribute to sessions, giving evidence for an against the agile practices we discuss.
Because of the teaching approach we take, the course unit may suit you if:
- You enjoy learning by doing rather than just reading/listening.
- You are willing to join in with group exercises, even if that means occasionally getting things wrong in front of fellow students.
- You are willing to spend some time outside lectures, thinking about the concepts that were covered and making up your own mind about their validity and usefulness.
On the other hand, this course unit may not be for you if:
- You prefer to revise from lecture handouts rather than actually attending the lectures.
- You expect to be able to pass the course without attending the majority of the lectures.
- You prefer subjects that have clearly-defined right or wrong answers, rather than those where many answers are correct, provided a convincing argument can be given.
- You prefer subjects based on facts that you can memorise, rather than concepts and techniques that you have to apply to new situations.
We are grateful to staff at ThoughtWorks and the BBC for their assistance in the development and delivery of this course unit. We also benefitted from the ideas and hard work of Iliada Eleftheriou, Nic Garner, Abeer Shahid, Martin Borizanov, Caroline Jay and Raluca Puichilita in developing some of the course materials used throughout the course.