
Even in our college days we were so exited to do some programming with "Hardware". Later when we actually got into that profession we knew "Programming" always runs on "Hardware"
Even the software for this forum is continuously communicating with the hardware as we discuss. What matters is how "low" level you want to go.
Arduino language is a very high level one almost plain English. With not much of the hardwarish thing you expect.
In case you are interested to go deep inside Embedded Systems I strongly recommend you do the same with "C" or "C++" with any development board.
Even you can write "C++" within Arduino.
Forgive me if I sound rude but knowledge of "Programming" is actually learning a language in deep and not turning high the D13 pin on Arduino. So I suggest if you need to know the right things please start learning ATMega chip based embedded system programming with C++.
Perhaps you know Arduino is just a wrap around high level hardware on AVR microcontroller.
To know Arduino in deep you need to know AVR in deep. The scope is huge.
Below is a good starting point.
https://www.avrfreaks.net/forum/newbie-start-here?name=PNphpBB2&file=viewtopic&t=70673