The course covers all the classical topics related to databases and database management systems (DBMS), starting from the general concepts of information and data, to the specifics of a relational database management system, with SQL and QBE. It also deals with the most general notions of database design, both from a theoretical and practical perspective. No prerequisite knowledge of databases is required, but only a basic understanding of data structures and algorithms. In fact, the course takes a practical approach, aimed at teaching the fundamentals of DBMS and data base design using a large set of examples and applications. As part of this, a database design project will be assigned to students in order to expose them to realistic database applications.