Impetus
Toen ik datawetenschapper was bij Quora, vroegen mensen me vaak om bronnen om SQL te leren. Ik had moeite om iets te vinden waar ik achter kon staan, omdat ik vond dat een goede bron gratis moest zijn, geen registratie mocht vereisen en aandacht moest hebben voor pedagogiek—het moest echt om de gebruikers geven en er was niets dergelijks te vinden.
Door een aantal kleine technische uitdagingen te overwinnen, geloof ik dat Select Star SQL aan deze standaard heeft voldaan. Mijn hoop is dat Select Star SQL, net zoals Learn You a Haskell for Great Good! en Beautiful Racket hebben gedaan voor Haskell en Racket, de beste plek op internet wordt om SQL te leren.
Pedagogiek
Deze principes hebben geleid tot het ontwerp van dit project:
-
Programmeren leert men het beste door te doen.
Een groot deel van het materiaal bestaat uit oefeningen, en het worstelen met deze oefeningen zou het grootste deel van je tijd in beslag moeten nemen. -
Oefeningen moeten realistisch en substantieel zijn.
Om Alan Kay te citeren: "Je laat [de leerling] nooit iets doen dat niet het echte ding is - maar je moet je kont uit je broek werken om uit te vinden wat het echte ding is in de context van de manier waarop hun geest werkt op dat ontwikkelingsniveau."Evenzo zijn de oefeningen hier ontworpen om steeds geavanceerdere SQL-technieken te introduceren, terwijl de dataset wordt verkend op manieren die mensen daadwerkelijk zouden interesseren.
-
Leren programmeren is een mentaal model leren
Ons doel hier is niet om de regels te leren voor het gebruik vanGROUP BY
of wanneer te kiezen voor eenLEFT JOIN
boven eenINNER JOIN
. We weten dat we succesvol zijn als je na het schrijven van een SQL-query je ogen kunt sluiten en je kunt voorstellen wat de computer zou doen en wat de uitvoer zou zijn. Alleen dan zul je in staat zijn om echte problemen op te lossen met SQL.
Dataset
Onze dataset documenteert terdoodveroordeelden in Texas die sinds 1976, toen het Hooggerechtshof de doodstraf opnieuw invoerde, zijn geëxecuteerd. De dataset is waar mogelijk automatisch geëxtraheerd van de website van de Texas Department of Criminal Justice. Veel van de gegevens van vóór 1995 zijn echter alleen beschikbaar als afbeeldingen van fysieke documenten en deze moesten zorgvuldig handmatig worden geëxtraheerd.
De ruwe gegevens zijn beschikbaar als csv voor download. Door de handmatige extractie en opschoning die is uitgevoerd, is het waarschijnlijk de meest complete set gegevens over terdoodveroordeelden in Texas op internet. Je kunt ook een subset ervan verkennen die ik voor dit boek heb voorbereid:
Aan de ene kant is de dataset gewoon een onderdeel van een alledaags programmeringsboek. Aan de andere kant vertegenwoordigt elke rij immense ellende, verloren levens en in sommige gevallen verbazingwekkende verlossing en acceptatie. Bij het voorbereiden van deze dataset was ik diep ontroerd door een aantal van de uitspraken en ben ik mijn positie over de doodstraf aan het her.
Technicals
-
Client-side Databases. One of the challenges of making this site free was to avoid paying for web hosting. But to give users a hands-on experience with a database (see Pedagogy), one would have to host and pay for a proper backend. Thankfully, client-side databases exist. This allows me to use Github Pages' free static page hosting and have the pages run a SQLite database on your browser. Alon Zakai and others made this possible by porting the SQLite C code into Javascript using Emscripten.
-
Matthew Butterick. I met Matthew at the Racket Summer School and was blown away by the great work he's done on Beautiful Racket and Practical Typography. As you can perhaps tell, I borrowed many design ideas from there.
-
Jekyll. If not for Jekyll, I would have ended up writing all the html by hand. Thank goodness for Jekyll.
-
Web Components. I was able to reuse a lot of code by writing the interactive exercise and quiz components as custom html tags. It's a relatively new development as I understand, and I hope that W3C continues to push for broader adoption.
Credits and Contact
For corrections and suggestions, please write me (Kao) at zichongkao@gmail.com. You can find out more about me at Kaomorphism.
Noam Castel and Jowan Vogel did an amazing job on the Hebrew and Dutch translations. Please reach out to them for kudos and suggestions, or if you are interested translating it into other languages.
Much thanks to Sonja Lea Heinze, Quinn Batten, and Nicholas Retallack for providing valuable feedback.