I have been a Computer Engineer for over 3 years now, so I think I can speak to what skills you need to learn in rough order of complexity:
- Math. Math is the language of Engineering. If you can’t speak the language at least a little you are hopeless.
- Physics/Fields & Waves / Thermodynamics. You need to understand at some level how the universe you intend to manipulate works.
- Circuit Analysis. Without understanding how electricity flows and works with various basic components you are nowhere.
- Digital logic. Learn to use transistors to build gates and flip-flops, then combine those gates and flip-flops to do useful things.
- Microprocessors. Take the useful parts from Digital Logic and start building general-purpose processors. You don’t need to DO this, but you should understand the basics of how processors and memory are organized and used.
- Assembly language. This does not get a ton of use anymore, but if you are going to understand how higher-level languages do what they do behind the scenes you need to understand this to some degree.
- C/C++. Yes, I know these are old and crusty languages that your grandfather used to program with back in the stone age of 5.25″ floppy disks, but It’s still used to write a lot of low-level code and it lacks a lot of the convenient features of more modern languages. This forces you to really think about what you are doing.
- Signal Processing. You may or may not do a lot of this in your career, but you should be able to at least explain what a Fourier Transform is and why it’s a useful thing to do.