Projects per year
I have an extensive background in software engineering research, particularly in understanding and addressing the significant problems associated with designing, testing, and evolving large software systems. Much of his research has incorporated significant empirical investigations: either based around controlled participant-based experiments or through the the analysis of open-source systems and large-scale repositories. I have explored widely the application of search-based strategies and machine learning techniques (anomaly detection in particular) to software engineering problems such as test data generation and automatic fault detection, and also investigated the application of artificial immune systems to security problem.
More recently my research interests have expanded to explore how valuable information can be collected through passively collecting, crowdsourcing and analysing smartphone sensor data.
Over my career I have taught a lare range of classes, from 1st year undergraduate to postgraduate, mainly on areas related to programming, software engineering and software design.
My main current teaching responsibilities are:
- CS409: Software Architecture and Design (jointly with Dr. Murray Wood) [syllabus and myplace page]
- CS547: Advanced Topics in Software Engineering [syllabus and myplace page]
- CS971: Evolutionary Computation For Finance [syllabus and myplace page]
I am also responsible for overseeing the MEng final year group project:
- CS546: Group Project [syllabus]
and look after the industrial placements for those on the BSc (Hons.) Software Engineering and MEng Computer Science degrees:
- CS415 Industrial Placement (Software Engineering) [syllabus]
- CS416 Industrial Placement 1 (MEng Computer Science) [syllabus]
- CS552 Industrial Placement 2 (MEng Computer Science) [syllabus]
Additionally I am the primary contact for any research or undergraduate students wishing to carry out studies which require ethical approval.
Expertise & Capabilities
- Software Engineering (particularly design, testing and debugging)
- Conducting empirical studies of software engineering techniques and processes
- Search-based software engineering
- Software analytics (static analysis, dynamic analysis and repository mining)
- Software engineering
- Mobile computing
Research Output per year
Research output: Contribution to journal › Article
Research output: Chapter in Book/Report/Conference proceeding › Conference contribution
Student thesis: Doctoral Thesis
Activities per year
Activity: Participating in or organising an event › Organiser of major conference
Activity: Publication peer-review and editorial work › Journal or guest editorship