This course is about working on large, existing, software systems. We discuss how to successfully design, modify, maintain and operate the large software systems that form so much of the infrastructure of trade, commerce, communication and entertainment in the modern world. We discuss current issues faced by the practising software engineer, and particularly look at engineering trade-offs in different situations — this is not a course where there are right and wrong answers.
The broad themes of the course include:
The learning in this course is mostly self-directed. Each week we will cover a different topic. We will give you some starting points and suggested reading - but expect that you will also read other related articles etc that you find yourself.
We have a lecture slot Tuesdays 11am-1pm where we will discuss the latest topic based on what you have read and thought about during the week, your own experiences working in industry, and the views of some invited guests.
We have a lab slot Fridays 9-11am, where you can work in study groups on the current topic, and talk to the tutors about your thoughts and ideas.
This is a coursework only course, so there is no exam, however there are exercises throughout the term, so this is not an "easy option" - it will quite likely feel like a lot of work - but this balances with the fact that there is no exam preparation. You can see the schedule of work on CATE.
Most of the exercises are to be done in groups of 3. Work submitted individually will not be marked. You may change the members of your group from one exercise to the next - you do not have to stick with the same group all term.
The topics covered in this class do not have right and wrong answers - software engineering is all about trade-offs - so bring your own thoughts and opinions about what would work in which situations, and why. Back up your thoughts with things you have read about, or experienced in projects, work placements etc.
Some student feedback after a previous iteration of the course, which you may like to take into account before selecting the course:
We will use this Piazza forum for discussions and announcements related to the class.