Software Engineering for Industry
In this module you will have the opportunity to:
- Find out more about industrial practices for working on large, existing, software systems
- 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
- Discuss current issues faced by the practising software engineer, and particularly look at engineering trade-offs in different situations
- Understand that software engineering problems do not always have right and wrong answers
Upon successful completion of this module you will be able to:
- Discuss trade-offs that must be made in software engineering projects caused by various engineering and business forces
- Reflect critically on theory in the context of industrial software engineering practice
- Construct an evidence-based argument by conducting your own literature research
- Apply relevant software engineering tools, techniques and practices in a given scenario
- Reflect on your own software engineering experience in the context of the wider industry
The topics that this module covers vary from year to year, as we try to stay current with issues and ideas being discussed in the industry. However, an indicative set of topics from recent years would be:
- Working with Legacy Code
- Software Architecture
- Software Evolution
- Agile Methods in Practice
- Continuous Delivery
- Microservice Architectures
- Cloud Computing
- Resilience at Scale
The contents of CO362 3rd Year Software Engineering Group Project or equivalent experience.
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. You will undertake small practical exercises related to each topic, and also write a short piece each week explaining your thoughts on a particular question related to the topic, backed up with evidence from literature.
We have a lecture slot for two hours each week where we will discuss the latest topic based on what you have read and thought about during the week, and your own experiences working in industry (for example on placements and internships). Each week we will ask a few groups to present their thoughts and findings, and discuss them as a class. The class will also be joined by two industry experts from different companies each week, who will share their views and experiences.
We have a lab slot for two hours each week, 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, with no exam. There will be weekly assessed exercises (combining research, practical work, writing and reflection) undertaken in small groups. In total these exercises count for 60% of the marks for the module. Weekly exercises give the opportunity for weekly feedback to help you to improve your research, critical thinking and writing skills by looking at a different aspect of software engineering each week. There will be a final larger coursework, also done in groups, allowing you to demonstrate everything that you have learned from the course, which counts for the remaining 40% of the marks for the module.
Feedback is provided by:
a) written feedback on weekly exercises is given for each submission. Feedback is returned electronically, before the next week’s exercise is undertaken
b) general feedback on each exercise is given in class each week, discussing common themes and ideas
Prentice Hall PTR
2nd ed., Upper Saddle River, NJ : Addison-Wesley
Raleigh, North Carolina : Pragmatic Bookshelf