To answer a few of the database questions that keep popping up in this thread:
1. Is it worth understanding relational algebra? Yes. Definitely. It's not that hard, there's more or less a one-to-one mapping of relational algebra to SQL. Relational algebra is both a useful mathematical tool and indispensable when trying to understand query optimization. Relational algebra is also necessary to be able to read pretty much any of the database literature, if that's one of your goals. (Just be thankful you don't have to learn Relational Calculus or Datalog.)
2. Is it worth learning XML features like XML DTDs, XPath, XML Schema, and XQuery? Yes, definitely. I don't like XML, but there are tons of places where you can use XPath. (The most interesting thing about XQuery is probably how similar it is to SQL, though.)
3. Is it worth learning about SQL triggers? Probably. Ultimately, the web development world is split between people for whom separation of concerns means doing more in the database, and those for whom separation of concerns means doing less in the database. If you think doing validation and transactions in the database is sensible, triggers are also a sensible thing to learn about. However, people like DHH disagree and want validation in your app server with a dumber backend.
4. Is this vocational training? Well, this is the first in a three class sequence at Stanford. This class is mostly about schema and query languages, so in some sense, it's the most useful to practitioners (or at least, non-DBA practitioners). The second class is about systems and implementation (on-disk layout, indexing structures, query optimization). In the third class, students either learn about distributed databases or actually build their own from scratch. However, schema and query languages have enough theory behind them, and enough generality, that I wouldn't consider it any more vocational training than a class on compilers.
However, the three classes are intended to match up with Database Systems: The Complete Book (which, in the interests of full disclosure, is written partly by my former advisor). If you want to learn the material from the second class, I would just read the book. I've actually read the book cover to cover, and I think it's one of the best textbooks for that purpose. There are tons of examples everywhere, it's pretty talkative, and there is very little pretension (insert Russell/Norvig complaint here). On the other hand, some portion of the Internet seems to take the opposite view (e.g., some people just view the talkativeness as repetition).
I have always known that the "right" way of presenting dates is as "2011-09-25 23:52" for the sake of sorting. This spreadsheet has prompted me to think that the "right" way of presenting locations is actually "USA, NY, New York[, Streetname 1234]" for the same reason.
The problem with the new sorting is that it easily shows who's in the same city, but doesn't show who's in the same state. Yonkers, NY is not far from NYC, but is very far alphabetically.
I just realised that my previous post may have been a bit ambiguous. Just for completeness, what I meant was that the spreadsheet was previously unsorted (people would add their details at the bottom) and that someone came along and sorted it by location (presumably to make it easier for people to find each other). However, the sorting doesn't really solve the problem, as you correctly describe.
I made a new column and started adding details in reverse (e.g USA, NY). Admittedly I got a little bored so I didn't do everyone. Re-sorting on that column (if it's ever completed) would solve your problem.
I watched the first 6 videos and I have to say it is a bit boring. It feels more like vocational education on using man made contraptions than a university course. I was hoping for a course on how databases work: indexing structures (B-trees, COLAs), query optimizers, transactions, column vs row storage, etc.
1. Yes, they are. They're very useful for certain things. For example, want to update your fulltext index in Postgres after certain table cells change or when new rows are inserted? You'll need to use a trigger.
2. Knowing more rather than less is probably a good thing. Understanding the underlying model of relational data will help you build SQL databases that make sense given the data you're working with.
Of course, you won't use SQL in every project or job, but it's awfully useful. Ignore the hype that NoSQL is the wave of the future. It may be a wave of the future but so is SQL.
I don't get how to read the answer choices for this question:
<!DOCTYPE A [
<!ELEMENT A (B+, C)>
<!ELEMENT B (#PCDATA)>
<!ELEMENT C (B?, D)>
<!ELEMENT D (#PCDATA)>
]>
Which of the following sequences of opening and closing tags matches this DTD? Note: In actual XML, opening and closing tags would be enclosed in angle brackets, and some elements might have text subelements. This quiz focuses on the element sequencing and interleaving specified by the DTD.
What does this mean for example? A B /B B /B C B /B D /D D /D /C /A
Is it clear whether these open courses will be repeated in the future or if they are mainly tests before starting to charge ?
It is wonderful that they are freely available but can it really be a permanent thing and what does Stanford gain ?
Can I follow the advanced track at my own pace without being forced to participation? The advanced track of all of these classes seem to require participation, which I can't guarantee on their timeline right now.. (yay startup life!)
The XML quiz is quite annoying since it requires checking each answer against the DTD, but the DTD + answers are too big to fit on one screen even on a big monitor, so you keep needing to scroll back and forth.
I've tried searching for a list of Stanford's online open enrollment courses and haven't found anything. Is there a website that details their course offerings and a list of planned courses?
Yup, but also note this (from the home page, once you've logged in to the class):
The class has not yet officially started, but in this pre-launch period, you can begin looking at the first week of content so that you can see what's coming and get a head start.
Since there's already quite a lot of video uploaded (and three quizzes/assignments), I'm happy to get started early.
1. Is it worth understanding relational algebra? Yes. Definitely. It's not that hard, there's more or less a one-to-one mapping of relational algebra to SQL. Relational algebra is both a useful mathematical tool and indispensable when trying to understand query optimization. Relational algebra is also necessary to be able to read pretty much any of the database literature, if that's one of your goals. (Just be thankful you don't have to learn Relational Calculus or Datalog.)
2. Is it worth learning XML features like XML DTDs, XPath, XML Schema, and XQuery? Yes, definitely. I don't like XML, but there are tons of places where you can use XPath. (The most interesting thing about XQuery is probably how similar it is to SQL, though.)
3. Is it worth learning about SQL triggers? Probably. Ultimately, the web development world is split between people for whom separation of concerns means doing more in the database, and those for whom separation of concerns means doing less in the database. If you think doing validation and transactions in the database is sensible, triggers are also a sensible thing to learn about. However, people like DHH disagree and want validation in your app server with a dumber backend.
4. Is this vocational training? Well, this is the first in a three class sequence at Stanford. This class is mostly about schema and query languages, so in some sense, it's the most useful to practitioners (or at least, non-DBA practitioners). The second class is about systems and implementation (on-disk layout, indexing structures, query optimization). In the third class, students either learn about distributed databases or actually build their own from scratch. However, schema and query languages have enough theory behind them, and enough generality, that I wouldn't consider it any more vocational training than a class on compilers.