Description

Databases are essential to maintaining the information base in almost all modern business enterprises and to electronic commerce. They are also becoming increasingly important as a fundamental tool in much scientific research. Some knowledge of databases is now essential in any of these areas. The study of databases draws on several disciplines within computer science: logic, algorithms, programming languages and operating systems.

This course is an introduction to the principles underlying the design and implementation of databases and database management systems. It will cover the theoretical and practical languages that have been developed for relational databases, their implementation and optimisation. It will also cover transaction processing and concurrency control, as well as tools and techniques for decision support and data analysis.

General Information

Textbook (recommended)
Raghu Ramakrishnan and Johannes Gehrke: Database Management Systems (Third Edition). McGraw-Hill, 2003.
Textbook (further reading)
Serge Abiteboul, Richard Hull, and Victor Vianu: Foundations of Databases, Addison Wesley, 1995.
Out of print but freely available at http://webdam.inria.fr/Alice/
Prerequisites
Basic background in discrete mathematics:
• set theory (sets, set operations, relations, orders),
• combinatorics (permutations, combinations, partitions),
• graph theory (directed/undirected graphs, trees),
• computational complexity (complexity classes, decidability),
• complexity analysis of algorithms (big-O notation),
• logic (predicate logic, quantifiers, inference, satisfiability).
Logic, in particular, is essential to understanding and writing correct SQL queries.
There are no specific programming requirements. Familiarity with the Unix command line is a plus, though not strictly required.

Announcements

Announcements are not public for this course.
Staff Office Hours
NameOffice Hours
Dr Paolo Guagliardo
When?
Where?