As Richard Feynman famously said: "What I cannot create, I do not understand." I like to learn things to bare bones. But almost all courses are shallow.
Now I am learning https://www.nand2tetris.org/ and it's fantastic by structure and explanation. In the past, I also completed JS and HTML courses by Anthony Alicea on Udemy. These courses also follow a similar approach to truly understanding how things work under the hood.
What other books/courses could you recommend from any area of programming?
Complimentary to that I would recommend TinyRenderer
https://github.com/ssloy/tinyrenderer/wiki
This one is a CPU-based rasterizing renderer, it gives you a good understanding of what a GPU graphics pipeline does underneath.
In the graphics world the two common ways of rendering things are either rasterization or raytracing.
Raytracing is basically all the movie/VFX/CGI/offline renderers (although it is also being used for certain parts of real-time in recent years)
Raster is how most real-time renderers like the ones used for video games work.
If you're interested in graphics I'd highly recommend implementing a ray-tracer and a rasterizer from scratch at least once to get a good mental model of how they both work.