I regret relatively little about not formally studying computer science. I enjoyed my classes in Communication much more than I probably would have liked rehashing Java against, and I've always heard that CS classes are relatively poor at preparing students for real-world programming tasks anyway. Also, it makes me feel slightly less like a giant nerd that I didn't actually study this stuff.
For a COMM major and a journalist, I think I'm a pretty good coder anyway. I understand pointers and recursion, which are big stumbling blocks for people. I can write in functional, procedural, or object-oriented styles. I can code a front end or a relational database query. But all that aside, I've always felt that the one thing I did miss out on, going to self-training route, was learning about data in a (pardon the pun) structured environment. These days, I consider data structures to be the distinguishing factor between a decent programmer and a great one. And while I know my way around the basics, there are a lot of patterns that I don't understand: the kinds of trees that are used in databases or complicated searches, for example, or anything that uses big O notation. I think it's time I figured that stuff out.
So I'm starting this microblog--as close as Blosxom gets to Tumblr, I suspect--as a place to work through as many items on Wikipedia's list of data structures as possible (skipping the boring ones and the minor derivations, of course). I'll be implementing them in JavaScript, for a few reasons: it's the language where I spend most of my time, it's the lingua franca of the web, and it will allow me to create little in-browser demonstrations. I'll talk about each structure, discuss how the language choice impacted my implementation, and link to the completed version so you can take a look for yourself. I'll be starting in the linear structures with linked lists, but I'll probably jump around quite a bit.
In the interests of keeping this lightweight, I'll probably host comments on Google+ as soon as I can figure out how to do so. Please feel free to join me in the experiment, make suggestions or criticisms, and ask questions.
--Thomas Wilburn