Live data from Hacker News

Ask HN: What if I missed the good stuff in my undergraduate education?

news.ycombinator.com

1–10 of 48 posts

Ask HN: What if I missed the good stuff in my undergraduate education?

#1
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?

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#2
I have a similar, but slightly different issue. I also have an undergraduate degree, and I did take courses in operating systems, compilers, and algorithm design. The trouble is that I don't remember anything. I remember taking the courses, but there was a huge amount of information that got shoved into my head and remained there just long enough to pass the exams and now it's gone.

This is an enormous pity, because it's only now, years later when I have a full-time job and not much time, do I realize what I missed.

If I won the lottery or somehow came into enough money ('fuck-you' money, I guess), I'd probably repeat my undergraduate schooling. However, there are a couple of options that you and I might have.

The first thing to remember is that no matter whether or not you take a formal course, you'll probably be reading some good books in the subjects that we're interested in. There are lots of lists of good, solid introductions to the subjects that we are interested in.

The second thing is that we'll have to make time for the subjects that we're interested in. As working people, we don't have the luxury of spending all our free time on a given subject, but unlike undergraduates, our attention is not necessarily divided over several subjects. In my last year of undergrad, I was taking plenty of courses and it's perhaps not surprising that I forgot so much. Now we can choose one subject (like compiler design), and focus our free time (however little) on it.

A third option is a sort of middle-ground. Is there a local university to you? Most universities allow you to take undergraduate courses as a continuing student. We have our degrees, we're more interested in the knowledge that the course can give us than the credential that the course grants us. The course would grant us the structure and discussion we'd benefit from as undergraduates, while not completely monopolizing our time.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#3
There's too much cool stuff in the world to be able to do all of it. You need to pick something that extends what you know and helps you to accomplish something you can't yet do.

Yes, it's possible to design a language, implement a compiler, write a kick-ass AI, but it's all a long way from where you are (I assume) and while rewarding in the long run, will take ages to get there.

Instead, scratch an itch. Do you have a web site? Do you have an idea for a facility you can provide people? Can you write CGIs without a framework?

I can't tell you what to do - no one can really - but you need to think about what you might like to do.

Then do it.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#4
post #2

I have a similar, but slightly different issue. I also have an undergraduate degree, and I did take courses in operating systems, compilers, and algorithm design. The trouble is that I don't remember anything. I remember taking the courses, but there was a huge amount of information that got shoved into my head and remained there just long enough to pass the exams and now it's gone. This is an enormous pity, because…

We often get great lists of books posted on Hacker News. I wonder if there is a good resource for canonical books in those subjects floating around somewhere. I don't trust Google to tell me what to spend such a potentially huge amount of my time on.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#5

There's too much cool stuff in the world to be able to do all of it. You need to pick something that extends what you know and helps you to accomplish something you can't yet do. Yes, it's possible to design a language, implement a compiler, write a kick-ass AI, but it's all a long way from where you are (I assume) and while rewarding in the long run, will take ages to get there. Instead, scratch an itch. Do you have…

I appreciate your argument, but I feel like you missed an important motivation behind my question. You see, I'm worried about unknown unknowns. Once you know enough about a subject to choose an itch to scratch, you don't have to think about the difficult foundational subjects like compilers and AI. But before you get to that point, there are too many unknown unknowns. Like Yegge's perennially disappointing interview candidates, we can't say "grep" instead of "a 2,500-line state-machine in C++" if we don't know that grep exists. It's an unknown unknown, and while I know what grep is, I don't really know what happens under the hood when it comes to syntax trees and machine learning, and since they are foundational concepts of my field, I feel like I need to dive into them as soon as I can, to make everything else I do more informed and efficient.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#6
post #4
post #2

I have a similar, but slightly different issue. I also have an undergraduate degree, and I did take courses in operating systems, compilers, and algorithm design. The trouble is that I don't remember anything. I remember taking the courses, but there was a huge amount of information that got shoved into my head and remained there just long enough to pass the exams and now it's gone. This is an enormous pity, because…

We often get great lists of books posted on Hacker News. I wonder if there is a good resource for canonical books in those subjects floating around somewhere. I don't trust Google to tell me what to spend such a potentially huge amount of my time on.

Do you have a university near you? If you can get into their library (or even their bookstore), you can take a look at the recommended books yourself and see if they suit you. You can also get the book lists from university courses that interest you.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#7
Start with "The Elements of Computing Systems" by Nisan and Schocken. It's a book built around the goal of designing and constructing a computer from the ground up, starting with hardware design and ultimately writing the compiler and virtual machine for a simple Java-like language that runs on the computer you designed. You can download all the software necessary; all the software and support material work very well, and it's ideal for self-study. I think it's a great book; you can read my full review on Amazon--it's the only book I've ever been moved to review there.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#8
post #2

I have a similar, but slightly different issue. I also have an undergraduate degree, and I did take courses in operating systems, compilers, and algorithm design. The trouble is that I don't remember anything. I remember taking the courses, but there was a huge amount of information that got shoved into my head and remained there just long enough to pass the exams and now it's gone. This is an enormous pity, because…

> The trouble is that I don't remember anything.

I read somewhere that our long-term memory has unlimited capacity, and there are basically three ways of measuring your memory:

- Recall: see whether you can recall the pertinent facts.

- Relearn: measure the time it takes for you to relearn the topic.

- Recognize: see if you can recognize key points in a previously learned topic when it's presented again to you.

Most people when they claim that they "don't remember anything" only refer to the recall-metric. But I bet that if you try to learn these ideas again, it'd take you much lesser time that it'd for a complete newbie => you haven't really lost everything you learned. It's just dormant.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#9

Start with "The Elements of Computing Systems" by Nisan and Schocken. It's a book built around the goal of designing and constructing a computer from the ground up, starting with hardware design and ultimately writing the compiler and virtual machine for a simple Java-like language that runs on the computer you designed. You can download all the software necessary; all the software and support material work very well…

I second this, and it's a surprisingly inexpensive book, to boot.

Re: Ask HN: What if I missed the good stuff in my undergraduate education?

#10
post #5

There's too much cool stuff in the world to be able to do all of it. You need to pick something that extends what you know and helps you to accomplish something you can't yet do. Yes, it's possible to design a language, implement a compiler, write a kick-ass AI, but it's all a long way from where you are (I assume) and while rewarding in the long run, will take ages to get there. Instead, scratch an itch. Do you have…

I appreciate your argument, but I feel like you missed an important motivation behind my question. You see, I'm worried about unknown unknowns . Once you know enough about a subject to choose an itch to scratch, you don't have to think about the difficult foundational subjects like compilers and AI. But before you get to that point, there are too many unknown unknowns. Like Yegge's perennially disappointing interview…

In that case, read, but don't try to understand in full and complete depth, a few books. I would suggest:

* SICP

* The Dragon Book

* Programming Pearls

* The Elements of Computing Systems

There's a shed-load of good stuff, and no doubt others will suggest more.

Post reply on HN