Teaching Philosophy
At The Open University, we are committed to making higher education accessible to all. My teaching focuses on helping students develop practical software engineering skills while understanding the theoretical foundations that underpin modern computing.
I am particularly interested in teaching the art of computer programming at a distance, including developing innovative approaches using deep neural networks to generate educational dialogues and make programming education more accessible to students with visual impairments.
Teaching Areas
Computer Programming
Fundamentals of programming and software development, with emphasis on practical skills and problem-solving.
Software Engineering
Software development methodologies, design patterns, and best practices for building reliable software systems.
Requirements Engineering
Techniques for eliciting, analyzing, and managing software requirements throughout the development lifecycle.
Software Maintenance
Strategies for maintaining, evolving, and refactoring existing software systems.
Distance Learning Innovation
As part of The Open University's mission, I contribute to innovative distance learning approaches:
- Developing accessible programming education for students with visual impairments
- Using deep neural networks to generate educational dialogues
- Creating interactive learning materials for software engineering concepts
- Exploring multimodal approaches to programming education
Supervision
PhD Supervision
I welcome applications from prospective PhD students interested in:
- Automated Software Engineering
- Deep Learning for Code Analysis
- Requirements-Driven Adaptation
- Program Transformation and Migration
- Security and Privacy in Software Systems
Current PhD Students
-
Pedreira Diaz (2021 - present)
Co-supervised with Michel Wermelinger and Tamara Lopez
-
Chris Neale (2020 - present)
Co-supervised with Blaine Price and Bashar Nuseibeh
Completed PhD Students
-
Julian A. Harty (2023)
Co-supervised with Arosha Bandara
-
Dimitris Gkoumas (2021)
Co-supervised with Dawei Song and Shailey Minocha
-
Sagar Uprety (2020)
Co-supervised with Dawei Song and Shailey Minocha
-
Tezcan Dilshener (2017)
Co-supervised with Michel Wermelinger
-
Michael A. Giddings (2016)
Co-supervised with Michel Wermelinger, Pat Allen, Andrian Jackson, and Jan Jürjens
-
Simon J. Butler (2016)
Co-supervised with Michel Wermelinger and Helen Sharp
-
Saad bin Saleem (2015)
Co-supervised with Bashar Nuseibeh
-
Pierre A. Akiki (2014)
Co-supervised with Arosha Bandara
-
Stefan Tautenberger (2014)
Co-supervised with Jan Jürjens and Bashar Nuseibeh
-
Lionel Montrieux (2013)
Co-supervised with Michel Wermelinger
-
Mohammed Salifu (2008)
Co-supervised with Bashar Nuseibeh
Project Supervision
I supervise undergraduate and postgraduate projects related to software engineering, program analysis, and machine learning for code.
Public Engagement
I regularly contribute to public understanding of computing and technology through:
- Articles on The Conversation (13 articles published)
- Public lectures and presentations
- Media commentary on software engineering topics