I have thought quite a bit about how useful a course with theoretical and practical elements from silicon atom to HTTP request would be. You start building an AND gate from MOSFETs, an adder from 4000 series ICs, a simple processor on a FPGA, you write Tetris for your simple processor, and then you switch over to a real computer, operating system fundamentals, data structures, algorithms, protocols, ...
That is certainly a lot of information to process, but if designed well it could be like one big project where you regularly end up with a result and then continue building the next layer on top of what you already have. There would be a clear path to follow in order to not get lost in any layer but if you wanted to, you could also keep exploring a layer for a while before moving on.
Not sure if that would actually be a good idea or not, but at least retrospectively that looks like an awesome way to really learn how to code.
My intro to EE choose in college was like this. We started with just gates, then built one register, then duplicated that register and eventually had a simple CPU. We could do some math but that's about it. No Tetris.
That is certainly a lot of information to process, but if designed well it could be like one big project where you regularly end up with a result and then continue building the next layer on top of what you already have. There would be a clear path to follow in order to not get lost in any layer but if you wanted to, you could also keep exploring a layer for a while before moving on.
Not sure if that would actually be a good idea or not, but at least retrospectively that looks like an awesome way to really learn how to code.