📖 Teaching#
🎓 Bachelor’s level#
🌱 Programming#
I teach practical sessions (lab work) in the Bachelor’s course Introduction to programming.
Note
Practical sessions instructor — Introduction to programming
Objectives
Confidently use several algorithmic/programming styles and paradigms (imperative, functional, object-oriented, and multitasking), as well as several programming languages.
Analyse and interpret the results produced by program execution.
Explain and document the implementation of a technical solution.
🚀 Programming#
The Imperative programming - basic level course (2nd year of the
Computer Science Bachelor’s degree) provides a foundational understanding
of the C programming language, with a strong focus on memory management
and good programming practices.
Note
Responsible lecturer — Imperative programming - basic level
Objectives
Know the specifics of the
ClanguageUnderstand memory management in
CBe familiar with parts of the standard
ClibraryCompile and link multiple source files
Use an external library
Know the basic
Ctypes and structures
🏆 Programming#
The Imperative programming - advanced level course (2nd year of the
Computer Science Bachelor’s degree) provides an advanced understanding of
the C programming language.
Note
Responsible lecturer — Imperative programming - advanced level
Objectives
Be familiar with the complete standard
ClibraryUse an external library
Know advanced
Ctypes and structuresMaster function pointers
Understand the implementation of classic data structures
Interface
Cwith other languagesUse cross-compiling
🎓 Master’s level#
🧑🔬 Software engineering#
I teach in this Master’s course and I am responsible for the CI/CD part, in lectures, tutorials, and practical sessions. I also teach the Docker practical sessions.
Note
Course instructor — Software engineering and agile methods
Objectives
Apply software engineering best practices: quality, testing, and design patterns.
Understand software life-cycle models and software quality standards.
Implement testing at component, integration, and system levels using static and dynamic approaches.
Use software metrics to improve software quality.
Design and model component-based systems.
Discover formal verification and model-checking approaches for critical systems.
Use version-control tools and continuous integration workflows.
Apply agile project-management methods (Scrum-like).
Understand virtualization and containerization principles.
Work in teams and independently with responsibility.
🧠 Research discovery#
I also teach in the Master’s course Research discovery, focused on discovering the L3i laboratory ecosystem and scientific practice.
Note
Course instructor — Research discovery
Objectives
Discover the scientific activity, projects, and organisation of L3i (Computer Science, Image and Interaction Laboratory).
Identify a laboratory project and a research question to explore during the first three semesters of the Master’s degree.
Adapt practices and skills in a rapidly evolving scientific and technical field.
Adopt a responsible approach to research and digital practices.
Update and critically assess scientific and technical knowledge.
Reflect on personal and peer practices and reinvest this reflection into action.
Follow scientific talks and activities linked to laboratory life.
Understand research structuring and funding mechanisms.