📖 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 C language

  • Understand memory management in C

  • Be familiar with parts of the standard C library

  • Compile and link multiple source files

  • Use an external library

  • Know the basic C types 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 C library

  • Use an external library

  • Know advanced C types and structures

  • Master function pointers

  • Understand the implementation of classic data structures

  • Interface C with other languages

  • Use 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.