Distributed systems and ML, I would say. This is if you want to land a solid job, assuming you have the right mindset. Some mentioned here video games, but that industry is far from lucrative. There are a lot of interesting things to learn in CS, but very few of them will make you money. P.S. Math proofs. Learning what it takes to prove a moderately complex theorem makes a far bigger impact than learning how to program a video game engine. Math teaches how to build highly complex, but reliable, imaginary structures from nothing, by introducing axioms and building up on them using logic - a skill that distinguishes good software engineers from mediocre ones.