You are here
Introduction to Databases

This is an introductory course on databases primarily focusing on how databases and database systems are used in applications. The course will cover relational databases and SQL as well as cover semi-structured and unstructured data using the XML and JSON models. It will cover different ways of designing databases and include such important topics such as; indexes, views, transactions, authorization, integrity, triggers, and online analytical processing (OLAP). Towards the end of the class, Cloud databases and NoSQL systems will also be covered.
About the Course
"Introduction to Databases" had a very successful public offering in fall 2011, as one of Stanford's inaugural three massive open online courses. Since then, the course materials have been improved and expanded, and we're excited to be launching a second public offering of the course in winter 2013. The course includes video lectures and demos with in-video quizzes to check understanding, in-depth standalone quizzes, a wide variety of automatically-checked interactive programming exercises, midterm and final exams, a discussion forum, optional additional exercises with solutions, and pointers to readings and resources. Taught by Professor Jennifer Widom, the curriculum draws from Stanford's popular Introduction to Databases course.
Why Learn About Databases?
Databases are incredibly prevalent -- they underlie technology used by most people every day if not every hour. Databases reside behind a huge fraction of websites; they're a crucial component of telecommunications systems, banking systems, video games, and just about any other software system or electronic device that maintains some amount of persistent information. In addition to persistence, database systems provide a number of other properties that make them exceptionally useful and convenient: reliability, efficiency, scalability, concurrency control, data abstractions, and high-level query languages. Databases are so ubiquitous and important that computer science graduates frequently cite their database class as the one most useful to them in their industry or graduate-school careers.
Course Syllabus
This course covers database design and the use of database management systems for applications. It includes extensive coverage of the relational model, relational algebra, and SQL. It also covers XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery, and XSLT. The course includes database design in UML, and relational design principles based on dependencies and normal forms. Many additional key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), JSON, and emerging NoSQL systems. Working through the entire course provides comprehensive coverage of the field, but most of the topics are also well-suited for "a la carte" learning.
How long does the course last?
The course material is scheduled for just over 9 weeks, followed by a final exam period March 21-23, 2013.
How many hours a week should I expect this course to take?
Each week includes 1-2 hours of video material, although some students review videos multiple times, while others opt to crank up the speed. Quizzes and exercises can vary from attempting the minimum number of problems just once (perhaps a couple of hours), to repeating all of the required and optional problems until you have them completely nailed. Because we provide pointers to a great deal of review material, and we've created a large number of optional exercises, the sky's the limit in terms of time commitment.
What background do I need?
The course does not assume prior knowledge of any specific topics, however a solid computer science foundation -- a reasonable amount of programming, as well as knowledge of basic computer science theory -- will make the material more accessible. Also bear in mind that picking and choosing which topics to learn is a great approach, and not all topics require the same level of background.
Do I need to buy a textbook?
Detailed lecture notes are provided. Having a textbook in addition to the notes is not necessary, but you might want to purchase one for reference, to reinforce the core material, and as a source of additional exercises. Suggested textbooks and readings are listed as part of the materials.
How does this course differ from the corresponding course for Stanford students?
Stanford students watch exactly the same videos and do exactly the same quizzes and exercises. In addition, Stanford students work hand-graded "challenge problems" in certain topics, and they have a multi-part programming project.
Do I get a credit or a certificate?
No, you will receive an informal Statement of Accomplishment from the instructor.
What will be required to receive a Statement of Accomplishment?
When the course was offered in fall 2011, all students who achieved at least 50% of the possible points received a Statement of Accomplishment. We expect to use a similar metric this year.