School of Electronic Engineering and Computer Science

People menu

Dr Mustafa Bozkurt


Lecturer in Software Engineering

Telephone: +44 20 7882 6455
Room Number: Peter Landin, CS 419A
Office Hours: Wednesday 15:30-17:00


Introduction to Object-Oriented Programming (Postgraduate)

Basic concepts and techniques of object-oriented programming in general and the use of Java in particular. Issues in class and interface design (minimising class and member accessibility, immutability, composition versus inheritance, interfaces versus abstract classes, preventing subclassing, static versus nonstatic classes). The module will also examine a number of Design Patterns. Requirements for creating understandable, maintainable, and robust classes that can be easily reused by others in a team. Exceptions, type variables, iterators and other advanced aspects of the core Java language will be covered. Java's Collections Framework will be considered in detail as an example of a coherent set of Java classes designed to work together, and for its use of generic typing. There will also be some coverage of software engineering principles: analysis and specification of user requirements, object-oriented design, testing and debugging, refactoring.

Software Engineering (Undergraduate)

Software Engineering is concerned with applying engineering principles to the production of software. This module provides the management principles, theoretical foundations, tools, notation and background necessary to develop and test large-scale software systems. The practical part of the module consists of lab assignments in which students use a range of relevant tools (a Java programming IDE, unit testing tool, configuration management tool, UML design tool, and project planning tool). Aims To ensure students have the necessary understanding of the principles and tools needed to build and test large-scale software systems. In particular, it provides the necessary background for students to undertake a significant group project assignment in subsequent modules or employment.

Software Engineering (Work based)

This module is only open to degree apprentices in the School of Electronic Engineering and Computer Science. It covers the following topics: engineering principles, management principles, theoretical foundations, tools and notation for development and testing of large-scale software systems; practical skills in using a range of relevant tools including a Java programming IDE, unit testing tool, configuration management tool, UML design tool, and project planning tool; exposure to industry-standard techniques and tools.

Software Engineering Project (Undergraduate)

Students in pre-assigned groups of approximately six will be presented with a significant software problem to solve. To meet the problem requirements and build a satisfactory system within the time constraints the students will have to apply the principles learnt in the Software Engineering module and will have to work effectively as a team. Each team must choose a project manager and assign appropriate roles to each member.

The Semantic Web (Postgraduate/Undergraduate)

The idea of putting semantic information on the Web has been around for a long time: we now have the beginnings of a practical application. This has its foundations in what is called Description Logic, which strikes a good balance between tractability and usability. This has led to a Web language called OWL, which is at the centre of modern work on the Semantic Web: there are now useful implementations, and there are workable, if modest, applications of this technology.


Research Interests:

  • Service Oriented Architecture and Web services
  • Software testing
  • Search-based software engineering
  • Requirements Engineering
  • Cloud computing and cloud services


  • Bozkurt M, Harman M, Hassoun Y (2013). Testing and verification in service-oriented architecture: A survey. nameOfConference
Return to top