The overall aim of this module is to introduce students to a range of advanced, near-research level topics in contemporary software engineering. The actual choice of topics will depend upon the interests of the lecturer and the topics current in the software engineering research literature at that time. The course will introduce issues from a problem (user-driven) perspective and a technology-driven perspective ? where users have new categories of software problems that they need to be solved, and where technology producers create technologies that present new opportunities for software products. It will be expected that students will read articles in the software engineering research literature, and will discuss these articles in a seminar-style forum.
The module will cover three issues in contemporary software engineering, intended to be representative of the current issues being addressed by the software engineering research community. Potential topics might include the following (note that this list is indicative only ? in practice, lecturers will select topics to reflect contemporary research trends in the field):
- Program slicing and its applications
- Concurrent object-oriented programming (the Actor model)
- Computer-supported cooperative work
- Embedded systems
- Extreme programming
- Aspect-oriented programming
- Object-oriented design patterns
- Software management & change
- Software maintenance
- Software quality management
- Proceedingsof the International Conference on Software Engineering (ICSE)
- European Conference on Theory & Practice of Software (ETAPS)
- IEE (and IEEE) Journal on Software Engineering
- ACM Transactions on Software Engineering
- ACM Transactions on Software Engineering Methodology
At the end of the module, the student will:
- Understand the key problems driving research and development in contemporary software engineering (eg the need to develop software for embedded systems).
- Be conversant with approaches to these problems, as well as their advantages, disadvantages, and future research directions.
- Understand the key technological drivers behind contemporary software engineering research (eg the increased use of the Internet leading to the need to engineer systems on and for the web).
- Be able to read and understand articles in the research literature of software engineering.
- Be able to present, analyse, and give a reasoned critique of articles in the software engineering research literature.
Teaching will comprise 10 tutorials, and 36 lectures (3 lectures per week), which include exercises providing the students with formative feedback concerning their understanding of the material. In addition, the students will use the non-contact hours to deepen their understanding of the material using the lecture notes, additional exercises, recommended textbooks, and articles from journals and conferences in the area of software engineering. As well as lectures, the course will include seminar-based discussions, at which students will be expected to present critiques of such articles.