"I would really like to learn this stuff". If you are serious: * Stick with math classes through school. Focus on non-standard math: logics, group theory, meta-mathematics. This will force to thing abstractly. * Go to college, specialize in software engineering. Take every compiler class you can get. * Collect/read the standard compiler texts: Aho/Ullman, etc. * Build a compiler. Start by building a rotten one. This will teach you some issues. Build a second one. Repeat.