Class begins January 15, 2013
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.
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.
Jennifer Widom is the Fletcher Jones Professor and Chair of the Computer Science Department at Stanford University. She received her Bachelors degree from the Indiana University School of Music in 1982 and her Computer Science Ph.D. from Cornell University in 1987. She was a Research Staff Member at the IBM Almaden Research Center before joining the Stanford faculty in 1993. Her research interests span many aspects of nontraditional data management. She is an ACM Fellow and a member of the National Academy of Engineering and the American Academy of Arts & Sciences; she received the ACM SIGMOD Edgar F. Codd Innovations Award in 2007 and was a Guggenheim Fellow in 2000; she has served on a variety of program committees, advisory boards, and editorial boards.
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.