Thursday, June 25th, 2009
I didn't learn about databases in school

I was talking with Ben (the CTO at Zane) about what some of the core skills that set apart good programmers from bad ones.  Probably the most important thing is a solid understanding of how to store and retrieve information from a database.

 

I understand databases pretty well.  I'm no expert, but I almost never run into a situation where I can't easily implement a database-driven solution to a problem.  My initial reaction was, "thank god I learned about databases at Wash U."

 

Then I though about it.  I don't think I ever once dealt with a database in school.  I never learned how they worked.  I never used them to store data.  I never ran a query.  Not once.  How in the world could I have gotten a CS degree from a great school without once coming across one of the most fundamental aspects of programming?

 

Ok, so to be fair, a computer science education is supposed to be more about theory and less about learning what you'll use in the real world.  But I still had to learn Java, C, C++, VHDL, and the list goes on.  If I only needed to learn theory, then I should have only needed to learn on programming language.  Hell, I shouldn't have even needed to learn one if the point was to study theory.  And if there is even a hint of practical experience being taught, databases should be as high on the list as learning any programming languages.

 

Also, there was one database class which I was planning on taking as part of my Masters program.  I'm sure I would have learned more than enough in that class.  But that class wasn't required and most of the people I know didn't take it.

 

I'm not trying to blame Wash U for this.  I think my coursework was very similar to the status quo.  But still, shouldn't every CS major be required to at least understand the basics?


Posted by Tyler King

This post has 7 Comments

r king
June 26, 2009 at 07:15 am
i find it interesting to contemplate how curricula at top  universities might be designed to best meet the needs of diverse students for jobs yet unknown.

Bracken King
June 26, 2009 at 09:07 am
The curriculum at least seems consistent. Based on that list, you didn't learn any scripting languages (perl, python, etc) which are commonly used for database work in research, or any web programming languages (html, php, etc), which are also often used with databases. I don't think many Java or C++ programmers spend a whole lot of time interfacing with relational databases, but I could be wrong.


June 26, 2009 at 09:18 am
Regardless of what platform you're working on, pretty much everything uses a database to store information.  From web development to video game design, I can't think of a common discipline that doesn't need databases.

Also, .Net (c#, visual basic) uses this weird data structure interface library so that no matter how the data is stored, you get to it using SQL commands.

You're right that it's consistent, but it seems consistent with what the requirements should have been 15 years ago.  Students these days should be learning perl, php, mysql, etc.

Microsoft seems to finally be realizing that this internet thing is catching on (only 10 years late).  Our curriculum should do the same.

June 28, 2009 at 11:22 pm
I think what it comes down to is that using databases is actually really easy.  A DB course at a university CS program should teach the underlying theory (relational db's, etc) and maybe the major algorithms used in constructing one.

It think it would be pretty silly to teach how to use a database, when any reasonable CS student should be able to figure it out very quickly.  Of course there are more advanced topics that may require deeper knowledge of specific systems such as MySQL but these can be learned from an O'Reiley book or something like that.

@Bracken
I don't know if you are familiar with SQLite, but that is actually a pretty popular system used in many Java/C++/python/whatever desktop applications.  It allows you to interact with a database in the same manner as mysql, but the db is contained within a standalone file.  Of course this is slower than a MySQL server, but it is more than adequate for the data storage needs of many applications.

June 28, 2009 at 11:53 pm
@Frodo - Couldn't any reasonable CS student learn how to write java on their own?  O'Reiley has books on that too.

That's kind of what I'm getting at.  If they're going to teach anything practical, it seems like they should cover the really important things.  It's way more important to know how to use a database than to know how to write both Java AND C++.

Whether we like it or not, even the best colleges need to teach practical skills.  Sure the kids could buy their own text books and learn it outside of school, but what's the point of school in the first place in that case?  You can buy a text book that teaches theory too.

June 29, 2009 at 12:28 am
I don't think the purpose of CSE131 was to teach us java; it was to teach us the basics of programming. Java just happened to be the language they taught it in.

June 29, 2009 at 12:37 am
Then why was it required for us to also learn C++ in the OOP design lab?

For some reason there seems to be this attitude that only two year tech schools are allowed to teach things that most students will actually use.  The reality is that the majority of CS majors from Wash U are going to go get jobs as programmers.  Considering that, I think it makes sense to spend one week talking about relational databases sometime during the four year program.

Leave a comment

Please fill this out to prove you aren't a robot.
You can Create an Account or Log in to hide this.
Name: Required
Email: Required. This will not be shared
Your Website: Optional
Comment:
Email me if other people comment on this post
Receive Email Updates:


About this site
Hi, I'm Tyler King and this is my blog. It's about programming, graphic design, UI design, and anything else related to software development. You can read this post to learn a little bit more about what I'm trying to do here.

If you're interested in learning more about me, check out my Portfolio, Bio or Resume.
Search
Tips
If you have any feedback about the site or you have a topic you'd like me to write about, send an email to tips@TylerKing.net.
Archives
2009 (88)
August (6)
July (17)
June (20)
May (33)
April (12)
Links

More about me:


My friends:


Sites that I really like:


Blog
Portfolio
Resume
Bio
Contact
© 2010 - Tyler King