While working on my PhD, I had the opportunity to teach for three years (~200 hours) at the departement of Computer Science of the IUT of Orsay, attached to the University of Paris-Sud. In addition, I was responsible during my postdoc at Vrije Universiteit for coordinating and teaching the Knowledge & Data course in 2019 with Stefan Schlobach and in 2020 with Victor de Boer.

The objective of the Knowledge and Data course is to make students acquainted with methods and technologies used for expressing knowledge and data, in particular published on the Web. In this course you students will study formalisms that are useful and necessary to represent knowledge and data, in particular when this knowledge and data is to be reused, e.g. published on the web. We introduce the Semantic Web stack, a set of technologies and representation formats (RDF, RDFS, OWL) for expressing semantics and linked data in a web-accessible format, use the SPARQL query language to query over this data, and build a Web application that uses the data for some intelligent task. At the end of this course, students will have built an intelligent Web application that queries and reasons over knowledge integrated from various sources obtained from the Web. All this will be based on formal logical theory.

In this course, I introduce students on how to build (beautiful) dynamic websites. In its first part, the course covers client-side technologies (HTML5 and CSS) for introducing students on how to build well-designed and responsive user interfaces. In the second part of this course, we focus on the server side, and mainly the PHP programming language. This allows students to build dynamic websites that can process the user's requests, such as loading and saving information to a database.

This course is divided in two parts:
  1. Distributed database: It is a database in which its different parts are stored in multiple computers, located in the same physical location; or may be dispersed over a network of interconnected computers. Distributing the database allows to limit the transfer of information over the network, divide the charges, and increase the fiability by duplicating important information.
  2. Knowledge representation: In this part of the course, I introduce students firstly to the Extensible Markup Language (XML), as a way to encode information in a human-readable and machine-readable format. Then I introduce students to standard Semantic Web technologies, such as RDF, OWL, and SPARQL as a way to represent, infer and query knowledge in a machine-readable format.

Object-oriented programming (OOP) is about thinking in terms of classes and objects, and organizing your code by following the best practices. In this course, I teach students how to abstract a problem in an object oriented style, using the JAVA programming language. This course helps students to write a better code, that is easier to change and support, whilst introducing them to several new concepts (e.g. inheritance, encapsulation, and polymorphism).

In this course, I expand upon what students have learned about SQL and basic database management systems by introducing various other advanced topics, such as query optimization, stored procedures, triggers, concurrency and object-oriented extensions.