Page 1 of 2
CodeSchool recently launched a new Database path and we gave it a test run. Is a hands-on approach enough to get the deeper meaning of SQL?
The path’s objective is to enable you to:
'take control of your application’s data layer by learning SQL, and take NoSQL for a spin if you’re feeling non-relational'
The curriculum comprises three courses. The first one Try SQL is free, whereas the two follow-ons The Sequel to SQL, which we review here and The Magical Marvels of MongoDB require a paid subscription.
Before tackling the lectures, a few words on the look and feel of the CodeSchool platform. One word, elegance. The look is great, the structure is usable and easy to navigate, and the available material - free or otherwise - is a lot; you can literally spend countless hours just by watching the film studio strength, subtitle enabled, video productions.
The courses cover modern technologies and many industry buzzwords such as Node.js, Ruby on Rails, Jquery etc. and they are constantly updated to keep up with the ever evolving landscape of the job market.
The student writes code in a browser based IDE so there is no need for setting up a development environment comprising of compilers or IDEs. The philosophy here is that by lowering the entry barrier, the beginner can have a quick start and focus on what matters most. This means that having decide what you want to study you can immediately start coding in the browser, rather than to go through the potentially error prone process of setting up a full development environment.
The Sequel to SQL
As well as the quality of the video production, another and very important aspect is the teaching ability of the tutor. In this case, it’s Gregg Pollack, a veteran in the e-learning sector having helped establishing Envy Labs, Starter Studio, and Code School. He is the main player in almost any available video in the platform, ranging from SQL to jQuery, demonstrating that he is a man of many talents.
In this set of lectures, he is very composed , with a light sense of humor, keeps the momentum going without boring the viewer, has deep knowledge of the subject and the ability to pass that knowledge to the viewer in easily 'digested' terms.
Each course is comprised of units and each unit consists of several video lectures and slides, supplemented with integrated quizzes and code exercises
After you watch the mandatory, short (approximately 5 minutes long), self-contained videos whose purpose is to initiate the student to the concept, you then have to work your way through the quizzes, multiple choice or otherwise, and complete little challenges that require writing code on the browser-based IDE.
There are no grades, no deadlines, no assignments, no personal progress tracking so you can follow along at your own pace, freely pausing and resuming video and exercises. The units can be consumed individually (the units, not the lectures within a single unit) and in a non-linear way as they are designed with modularity in mind.
Everything starts with a noir-style movie clip and its accompanying imaginative song about SQL and its aggregates. The effect here is to try to present coding as being as much fun as watching a movie! Although I have mixed feelings about this, thinking that it is a lukewarm approach, I have to admit it works in reducing the stress faced by beginners.
The first lecture kicks off with an easy SQL topic; how to compute aggregates with max, min and avg on a couple of rows. Easy to pickup and a good way to get one’s feet wet. It is apparent from that moment on that although video is not highly regarded for learning how to program, if made correctly it can do wonders and beat by far the time one would had to spend reading and comprehending a book. In this instance the production is meticulous with a lot of thought put into it.
It uses animation very effectively and the way that table rows are stripped out to give the disabling effect or highlighted for drawing the viewer's attention. This is well harmonized with the instructor's narration to provide a logically coherent presentation that is very satisfactory.
After watching the video, you are presented with quizzes and challenges in the form of 'let's find how many actors we have in our database'. You then have to translate these requirements into an actual query based on a certain schema
The schema is handed in its raw SQL representation and with its actual inserted data rows so that you can work your way around the fields and data types necessary for constructing the query.
There is syntax highlighting as you type in the code, while the little circles on the right of the task, denoting that currently you work on a subtask, pulsate indicating that your code is parsed and checked against the correct outcome. When there’s a match, each circle becomes checked out in its turn to notify that a correct solution to the subtask has been given. When you are ready to move on to the next exercise you have to click on the Check my Work button.
In case you make a mistake and feel in need of a bit of help, you can ask for guidance, but not for the complete answer, by asking for a hint. If you need more assistance click Buy an answer which will reveal the complete code coupled with an explanation. This help isn't free and you have to trade some of the points collected so far, that way introducing a bit of gamification into the class and as such, more fun!
The error messages are context sensitive, and provide useful descriptions that one can understand. For example an incorrect submission will result in a message written in natural English like 'hold on we want to include the total salary for each country in the result set'
The next video is about aggregates too, but this time we look at it from a Group’s perspective that we subsequently filter through a Having clause.
Overcoming a limitation
Wanting to experiment with my own data or queries, I tried adding a few extra rows into the dataset but the schema panel was locked out. In particular, I wanted to add Nullable values in the name column and observe whether the having clause would take them into account and include them in the result set.
Unfortunately, you are confined within the boundaries of the task at hand, with no room to experiment and doing your own thing. Thinking out of the box is not allowed…
But all is not lost. It’s a good thing that the schema’s raw SQL as well as its actual data are available from within the browser’s IDE, so one can copy them verbatim, and paste them into SQL Fiddle. That’s what I did, but additionally inserted a few more rows and created a test case choosing Postgres as the backend ( CodeSchool’s courses are Postgres powered). Now I could run my own experiments
Another subtle, but important, detail not covered in the lecture is that the underlying database engine allows grouping on a column not included in the select clause; in this case the ‘name’ column is referred to in the Group by clause but does not appear in the Select clause.
So this completes Level 1. The screen lists your achievements and also introduces the social perspective by making it easy to share them with your colleagues or friends on Linkedin, Twitter, Facebook and Google+.
Level 1 is now dimmed out to indicate that it was completed it but this doesn’t stop you from revisiting any lecture you would like to repeat.