computerenhance.com is an online course explaining what you need to know and think about in order to produce performant programs. The curriculum includes weekly homework that gradually builds up into larger projects.
In order to get a feel for the work a CPU needs to do when executing code and to get a decently proficient in reading assembly, the course has you building an 8086 emulator.
Given example problem of quickly computing a large number of haversine distances loaded from JSON, we built:
sine and cosine