The comparison doesn't seem fair. First, I suppose you have others classes at the same time. And if you don't, you're free to do additional work on your own. In any case, hard concepts take time to sink in. You're better off learning this over a longer period of time.
Besides, don't think full time employees do meaningful intellectual work 8 hours a day. There are always a lot of distraction. And even when coding, it's not the same as writing tons of boilerplate code than understanding new complicated concepts.
> And the sad thing is, I imagine if I spent 3 weeks reading a compiler book, reading though the source of lex and yacc, and implementing some kind of basic compiler using them, I'd be a much better programmer than what we're doing
Are you sure that you'd be able to do that? supervised education helps you to pace yourself, focus on what is important and to keep motivated over the long run. The actual content is maybe the least important.
Besides, going through lex and yacc sources sounds like a huge waste of time for someone who wants to learn about compilation. There may be some value in this, but it should be last on your priority list.