Again, I’m finding this discussion engaging. It’s interesting to hear about what other students have done, even if not strictly related to my original question. Sometimes students just don’t know what other students are doing, and just how broad/deep their knowledge goes. It it informative in relation to the general/outlier applicant pool.
Depending on the student, it may, or may not, be an overkill. I can speak from my personal experience (as a physics major later in college) that learning an assembly language helped me in the ways that I described in my previous post (and more). That microprocessor the assembly language associated with became obsolete soon after I learned it, but the knowledge I gained remained. Not only that I learned how to manipulate the microprocessor (e.g. its ports, registers, etc.) directly and efficiently, but I also learned a great deal about what actually happened when a piece of software was run on a piece of hardware (e.g. what actually happens when a procedure/function tried to call another, what distinguishes local variables from global variables and how they’re stored differently in hardware, and so on). All such knowledge can help write more efficient code and reduce potential software “bugs”.
I agree wholeheartedly! It’s a great tool. As I said, my son, a ME, has a stronger foundational knowledge than many of his CS/CompE friends. It’s more a matter of when you do it.
The OP was asking about an introductory course. Python, C++, etc. would be an easier, and more practical stepping off point.
That said, if they want the deep dive in a very friendly publication, there might not be a better book than the one I linked.
Have a great weekend!