I was reading Steve Yegge's recent post on learning about compilers, and, as I'm sure is true for many HN visitors, the post resonated with me in a couple of unsettling ways. I have my undergraduate degree already, but my education did not include AI, OS, compilers, distributed computing or algorithm design. (That's what I get for going to a hippy liberal arts college.) It wasn't as bad as what Yegge described as a "Java certification program," since I came out of it knowing a lot of real-world skills like version control and command line use. However, I still consider the lack of things like compiler construction to be unacceptable gaps in my skillset.
Two problems: I have a full-time job and student loans now. I can't really do the undergraduate schooling thing all over again.
What's the best way to pick up these skills post-undergraduate degree? Should I take night classes at a graduate school, or will those curricula assume prior familiarity with the subjects I'm trying to learn? I already purchased "The Unix Programming Environment" since it seems to have some good basic information about lex and yacc, but is just the tip of the iceberg. There's only so much one can learn through years of Googling and reading the odd Hacker News post. What are my options, really?