http://www.ece.utexas.edu/undergraduate/courses/306 use this textbook: https://www.amazon.com/Introduction-Computing-Systems-Gates-...
This course starts with assembly language and then use C as the first programming language in order to understand computer architecture. C is the de-facto language when it comes to teaching embedded systems (think limited HW resources like memory etc).
Learn Assembly to learn how computer works!
Fresh book recommendations delivered straight to your inbox every Thursday.