Current Teaching

  • Present 2017

    Software Reliability and Testing - Master program

    The course provides an overview on software reliability and testing. It also introduces the students to secure programming. Finally, the course provides knowledge on advanced techniques that can be used in the long term in a research carrier focused on data mining for testing comprehension and generation and reliability prediction.

  • Present 2013

    Software Evolution - Bachelor program

    This course builds on basic software engineering concepts by expanding the discussion of the issues involved in maintaining and evolving software systems. It covers advanced technical aspects of the software maintenance and evolution process including reverse engineering, reengineering, change management, traceability management, refactoring, regression testing, and mining software repositories.

  • Present 2013

    Programming - Bachelor program

    The course aims at introducing students to both procedural and Object-Oriented programming. Particular emphasis is given to the principle of functional abstraction and the definition of abstract data types. The fundamental principles of human-computer interaction for building user-firendly interfaces are also provided.

Teaching History

  • 2017 2011

    Database Systems - Bachelor program

    The course aims at providing the essential skills related to concepts, methods, and techniques for the design, the implementation, and the use of database systems. The model of databases adopted during the course is the relational model, nowadays the most established and widespread.

  • 2015 2006

    Programming Languages - Bachelor program

    The course aims at providing the basic principles of a programming language, with particular emphasis to the statement interpretation, compilation and memory management.

  • 2014 2004

    Software Engineering - Bachelor program

    The course aims at providing an overview of the problems, theories, models, techniques and technologies that characterize the production and lifecycle of a software system, with particular emphasis to the object-oriented software.