"Introduction to Databases" was one of Stanford's inaugural three massive open online courses in the fall of 2011 and was offered again in early 2013. January 2014 will mark its third offering. 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.
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.
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 a phenomenal MOOC teacher. She is able to condense a very complex subject matter into succinct videos including detailed examples. If you have never worked with databases or tables before, then it may be a bit difficult to pick up initially, but Widom does a great job of onboarding laypeople
To date, this has been my favorite and most rewarding MOOC. I would honestly recommend it to everyone. I would argue that it is essential for anyone in a Computer Science or Engineering program, regardless of whether you want to specialize in databases or not.
Annacompleted this course, spending 4 hours a week on it and found the course difficulty to be hard.
I liked the course as it allowed me to cover a lot of new things, and go deep in the topics I was interested in. The lectures were clear and engaging, and the tasks were though challenging but interesting. I think it is a really good course, as it's leading you smoothly through the materials and motivating to accomplish most you can.