The objectives are formalized for each of the two parts of the course.


This course will teach the fundamentals of relational theory, SQL language and its relationships with relational algebra, design of data in relational databases by means of the conceptual and logical  design of databases. The course will introduce the students to the basic notions of NoSQL databases, important for the new generation of databases and the management of big data. In the laboratory the students will be able to work with a practical database management system.


In this course students will learn several fundamental principles of algorithm design and how to implement some fundamental data structures (e.g., graphs, arrays, trees, hash tables). This course aims at providing a solid methodological background for the analysis of algorithms in terms of their correctness, complexity (in time and in space), and tractability.