Back to Basics

September 29th 2011

Like a good number of nerds my age, my first experience writing code was copying BASIC programs from the back of old computer magaziness. Over time, I began experimenting with HTML and took a few C++ courses in high school. After a few Java classes in college, I gave up formal computer science training and just hacked around in my free time. I had a lot of free time.1

I learned quite a bit about writing software and maintaining a server over the years, but I could never shake the feeling that I missed something by not majoring in computer science. I was never really sure what that something was, but I felt that my purely pragmatic education left a sort of hole in my experience that CS students didn’t have. As a result, I always felt like an outsider (if not an outright fraud) talking with CS-diploma-wielding engineers at local tech and startup events. Still, I quickly learned that this feeling beat the alternative: Admitting that I’m an attorney.2

Anyway, I decided a few weeks ago that it is finally time to fill this hole. I did some asking around and bought a couple of books that appear to be widely regarded as the best for learning CS fundamentals: Structure and Interpretation of Computer Programs [free html version] and Introduction to Algorithms. I keep pretty busy with work and a few outside projects, but I’m setting aside at least an hour each day to work through these books. I already started working through SICP and, despite Scheme’s strange syntax3, I’m rather enjoying the book. The expository bits are good (if a bit dry) and the problem sets are challenging without being overly frustrating. I don’t think this is a particularly great introduction to programming for someone who is casually interested in the subject4, but it is perfect for my purposes.

I hope to eventually post my answers to the problem sets on this website (they are currently occupying a spiral-bound notebook), but I haven’t decided if I will post them to the main page or hack together multipage support in my blogging software. Look for them in the future.


1 How much free time? Enough to learn some Java, JavaScript, Python, Ruby, and a host of web-centric technologies.

2 Seriously, if you ever want a group of self-respecting hackers to ignore every word you say, just walk up to them and say you’re an attorney. I’m pretty sure that, as a class, we are disliked even more than Pointy-haired Bosses and Douchebag Business Guys.

3 Or should I say Lisp’s strange syntax?

4 For softer introductions to programming, check out Try Ruby, Learn Python the Hard Way, or Why’s (Poignant) Guide to Ruby. Code School also has some great learn-by-doing tutorials.


Read this far? Then you should follow me on twitter here.