EE and CS double major here (but originally wanted to become a physicist until I found out I wouldn't make any money doing so).
My tip to you would be to learn it from the absolute ground up. Learn how electrons behave. Learn the absolute fundamentals of things like differentals in potential and that we call that difference voltage. Learn why materials are conductive (free moving electrons).
Then look up vacuum tubes. Learn to understand how it can conduct in phase 1 and not conduct in phase 2.
Then finally learn how silicon is doped to form NPN or PNP materials and how that is used to conduct or not conduct based on its phase. That's why it's called a semiconductor.
These things are not hard but if you are a genuine CS and not a script kiddie then you will have to understand these concepts from the ground up.
Once you actually understand these things though I recommend doing what
>>11113980 says. Build your own circuit and build every component yourself first and only then use ICs to replace them.
So make your own amplifier. Then use transistors as your amplifier (since you now understand the basis for it).
Then build your own 555 timer circuitry and afterwards use 555 IC that you now understand from a fundamental standpoint since you build one yourself.
Eventually build (de)multiplexers, flip-flops, adders.
If you did all this you can build an APU, Registers and start building your own Computer and its architecture from the ground up. I build my own 4-bit computer like this to learn how it all works on a hardware level. And for my graduation I build a 12 bit computer with my own architecture (no ICs) and wrote my own opcode and eventually my own assembler language for my own architecture.
Doing this made me understand absolutely everything at the fundamentals of how a computer truly works. I feel like when I have a piece of hardware in my hands I have an intuitive grasp of how the entire device works both in hardware as in software.