Last weekend I finished the free on-line course Introduction to Databases taught by Professor Jennifer Widom of Standford University. The course was given entirely over the web, with pre-recorded video lectures, and assignments and exams that were automatically graded when submitted. I didn’t quite know what to expect when I signed up for it, but I have to say that it was a great experience. It took quite a bit of work, but I did learn a lot.
At university, I did an M.Sc. in Computer Science and Engineering, but I never took a database course. I have learnt enough SQL on my own and on the job to get by, but I thought I would benefit from a better theoretical foundation, so I decided to take the on-line course when I found out about it on Hacker News.
In the past, I have come across several interesting courses (from MIT for example) where all the material (video lectures, course notes, exercises, old exams) has been freely available on the web, but I never got around to following any of them. The difference this time was that the Introduction to Databases-course followed a schedule, gave out points for completing the assignments, and had a mid-term and final exam.
The course ran for 9 weeks (October 10 toDecember 10, 2011), with new video lectures, quizzes and exercises posted each week. The topics covered were
- Relational Databases
- XML Data
- Relational Algebra
- Relational Design Theory
- Querying XML
- Unified Modeling Language
- Constraints and Triggers
- On-Line Analytical Processing
- NoSQL Systems
There was a total of almost 900 minutes of video lectures, or 100 minutes per week on average. The course web-site recommends that you also use a text book, and even though I do have one (An Introduction to Database Systems by C. J. Date), it worked fine to complete the course using only the video lectures and some occasional Google-searches (mostly for SQL syntax).
I like to take notes, partly because it helps me remember the material better, and partly for future reference, so being able to stop and start the video made note-taking easy.
The video lectures showed the material to be covered as slides, with a small picture in the lower right-hand corner showing Professor Widom as she presented the material. She also wrote on the slides, just as if she were using a normal white-board. This worked very well for me – it felt like I was sitting in on a real lecture.
In addition to the video lectures going through theory, there were also demo videos, where Professor Widom ran SQL queries, XPath commands etc to demonstrate what they look like in practice.
There were also weekly quizzes and exercises. The quizzes consisted of up to 10 multiple choice questions on the material covered in the lectures. It sounds like it would be fairly easy, but to their credit they had put a lot of effort into making the questions challenging, and it often took quite a while to work out the correct answer for each question. Once all the questions were answered and submitted, you instantly got your score on that quiz. If you didn’t get full marks, you could re-take the quiz (up to 100 times – your best score counted), but 10 minutes had to pass between each try, to stop you from just guessing. Also, each question had more answer options than were shown, so the next time you took the quiz there could be different options to choose from (and in a different order), although the question remained the same.
For the exercises, you were given a few database tables and your task was to write SQL queries to extractinformation from the tables. Once you had written your query and submitted it, you instantly saw if your query produced the expected result. If it did you saved the query as the answer for that question, and if it didn’t you modified it and tried again. When you had all queries right, you submitted the exercise, and the result was saved. In addition to various SQL exercises there were also exercises using the same concept for relational algebra, XML validation, XPath and XSLT.
The mid-term exam and the final exam both consisted of multiple-choice questions similar to the quizzes. There were 13 quizzes and 12 exercises in total. The dead-lines for them made me study regularly (a good thing), and the immediate feed-back on them was also great. They were difficult and took a lot of work to complete, but they greatly improved my understanding of the material. As always, actually applying the knowledge is the best way to real understanding.
On the site there was also a forum where students could ask and answer questions. The forum was quite active, and several times there were questions and answers posted there that clarified some point I was wondering about. Even though the answers were almost always from other students, it worked because of a Stack Overflow-style voting system that made sure the best answers bubbled to the top.
Overall I am very happy with the course. It worked really well to watch the video lectures at my own convenience, and then work through the quizzes and exercises. Since there were dead-lines for all the quizzes and exercises, it kept me going at a good rate. It did take many hours of studying each week, which is difficult to find when you have a family and work full time, but I feel that I really learnt the material covered.
It is interesting to compare this course to a traditional course. In the fall of 2008 (also while working full time), I took the course Compilers and Execution Environments at KTH in Kista here in Stockholm. That was a traditional course where there were lectures to attend in person. The main advantage of that course over the on-line course was that I could ask the professor questions in person. As it happened, I did have a lot of questions, and being able to ask those, and follow-up questions, made a big difference in my understanding of the material. But apart from that aspect, I think that the on-line course worked just as well to teach me the subject.
The question of whether it is even necessary to have a schedule for an on-line course is interesting, since all the material is available when needed. In my case it definitely helped – without the schedule I wouldn’t have got around to doing it. It is also energizing to know that other people are taking the course at the same time. A third argument for using a schedule is that the forum is active at the right time for everybody – if you post a question (or just follow one), there are many answers posted when you need them, and you can post follow-up questions and get them answered.
Those who got at least 50% on the course got an emailed Statement of Accomplishment from Professor Widom. The course is offered by Stanford, but it does not give you any Stanford credits, and therefore the Statement of Accomplishment is signed only by Professor Widom. The score was calculated as 1 point for each correct quiz answer, 2 points for each correct exercise answer, and 3 points for each correct mid-term and final exam answer, for a total of 323 points. My score was 308 (95%), and I am quite happy with that.
Some statistics: 91734 people registered for the course. Of those, 25849 did some work on the course, and 6513 received the Statement of Accomplishment. Around 2300 students had a score of 301 or higher.
PS: The week after the course had finished, a colleague of mine asked me a question about an SQL query. He needed to remove some duplicated entries in a table of 300,000 items. Before taking the course I would not have known how to do that, but now I solved it with a self-join in a sub-query for the delete. Very pleased that the course proved its value so soon!