Teaching and interaction with students are two of my primary reasons for pursuing an academic career. At UCD I teach the following modules: Secure Software Engineering (COMP47660) The aim of the module is to teach students how to incorporate security throughout the software development lifecycle. The module covers foundational concepts in security, security by design – applied at each stage of the software development lifecycle, formal methods approaches to support security, penetration testing and static/dynamic analysis of software systems. Software Engineering (COMP41670) This module focuses on the processes and techniques fundamental to the creation of reliable and robust software systems. This module covers the main principles of the most important software development processes, from ‘traditional’ plan-driven software engineering to agile methods. It also cover principles and techniques of software requirements engineering, software design using UML, software testing and refactoring. Moreover the module hosts 2 or 3 panels where practitioners will be invited to describe their experience and opinion on various advanced software engineering topics, such as agile software development, legacy systems, and refactoring. Software Engineering Project 1 (COMP10050) The main goal of this module is to give the student experience in developing large software programs. This module also provides an introduction to some ideas and methods in professional software development. Students are encouraged to use a professional Integrated Development Environment. The important role of software testing in software development is also emphasised throughout the module.