Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am taking the Stanford Online Machine Learning class which is outstanding.

Is anyone taking the Stanford Online Database class: Does it seem useful if you have a few years of fairly simple database experience, but no formal education in the area? Or is it mostly academic and not relevant to developing and maintaining databases in the "real world"?

share|improve this question

closed as off-topic by gnat, MichaelT, Dan Pichelman, Kilian Foth, Bart van Ingen Schenau Jan 7 '15 at 16:37

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, Community, Dan Pichelman, Kilian Foth, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

It doesn't hurt to take these classes, if you have ample time. Stanford is a name in itself. – defau1t Nov 12 '11 at 8:29
up vote 2 down vote accepted

I can only speak to the usefulness of the Database class that I took (which is likely very similar to what Stanford offers).

My advice: TAKE IT.

Modern relational database management systems (RDBMS's) are based heavily on the relational database model. If you're not sure why those two are different, then that is reason #1 to take the class.

Reason #2 is based on the idea that not all experience is equal. I know people who have been working with databases for over 10 years who have no idea what "many-to-many" means and will create terrible table schemas, completely unaware that what they are creating is difficult to understand and maintain.

RDBMS's are unique in that they maintain a very close relationship to theory (unlike many other CS topics), and thus you will notice a huge gap between those who understand the theory and those who do not.

By taking the class, you will understand how databases work in theory, and will be MUCH better suited to apply those ideas in the real world.

Trust me--if you take the class, you will not be disappointed.

share|improve this answer
Haha! I know what many-to-many means! You wrote "those two are different" - Do you mean RDBMS and the relational database model? Where did you take the class? – B Seven Nov 12 '11 at 0:45
@BSeven, Yes, that is what I was referring to. I took databases at the Colorado School of Mines (a small but highly regarded engineering school near Denver). Its good that you know what many-to-many means. I still encourage you to take the class. – Stargazer712 Nov 12 '11 at 19:38
OK, thanks for the info. I will take it. – B Seven Nov 13 '11 at 1:44

I sat in on all three of the Stanford courses last year, thinking AI was going to be awesome and Databases the one I'd drop if I ran out of time because I've dabbled in databases as a quaternary function of my job. It turned out quite the opposite. While AI felt like I was watching Sebastian Thrun's hand draw exercises, nearly everything in the Jennifer Widom's class was useful.

She covers a broad overview of database-related technologies (list posted above by another person). The material consists of video lectures (with ungraded, in-video quizzes), exercises and programming assignments. The exercises and programming assignments are designed to let you retake them (within the scheduled time window). The material certainly has some academic treatment, but what I found most useful, were the hands-on exercises with a variety of technologies. Their test harness was great, and I learned a lot from debugging my stuff.

There are optional "screenside chats," which I found entertaining. The forums were helpful when I was really stuck on relational algebra, but the signal to noise ratio is a bit discouraging - there are a lot of people whining about credit on the exercises or the certificate of achievement, as if learning wasn't a prime goal.

One word of caution: There are several exercises due at the end of the course that take a non-trivial amount of time to work through. It is thus important that you pace yourself, even being ahead of schedule through the fourth week.

To recap: the course was very useful and I've already applied some of the things I've learned. I'd definitely encourage you to take it.

share|improve this answer
Jim: Do you know Steve McConnell? – Jim G. May 17 '12 at 3:20

I'm taking it right now and I'd say it's worth taking, though I can't really speak to its real world relevance since my job doesn't involve databases of any kind.

The class is structured very similarly to the Machine Learning class, with videos and quizzes done in the same style. There are no programming assignments similar to the ones in the advanced track of the Machine Learning course in this offering, but there are quizzes that include writing some relational algebra and SQL queries as well as specifying some XML DTD and Schema markup.

I came into this course with a minimal knowledge of SQL and I'm finding it to be a good overall introduction to the subject. So far we've covered principles of relational design, SQL fundamentals, XML schemas, and relational algebra. The video lectures go into both the theoretical background of each topic as well as some real-world caveats to watch out for.

Here's the list of the topics covered by the video lectures in this session. I've added a short description in brackets for the modules I've watched so far.

  • XML Data (DTD, XML Schema)
  • Relational Algebra (formal query language)
  • SQL (basic query commands)
  • Relational Design Theory (Normalization, BCNF, 4NF)
  • Querying XML
  • UML
  • Indexes
  • Constraints and Triggers
  • Transactions
  • Views
  • Authorization
  • Recursion
  • Online Analytical Processing
  • NoSQL Systems

I'm not sure how much "developing and maintaining" we'll cover in the rest of the course, but if you're interested in the theoretical background, an orderly approach to learning about the design and usage of RDBMSs, and some graded practice exercises to check your understanding, this course may be for you.

share|improve this answer

I am taking the online ai-class from Standford, and totally recomend it. The professoers are really good, and the course gives you a good "broad" view of the whole topic.

Myself take a look at the db-class and intending to do it after I finish the ai one.

share|improve this answer
I'm glad that you're enjoying the AI course, but it has nothing to do with the DB one. The database course is being taught by a completely different professor using a completely different style of lessons (not to mention that the subject matter is also completely different.) – Adam Lear Nov 12 '11 at 4:19

Not the answer you're looking for? Browse other questions tagged or ask your own question.