Print all states of getting from a random 256 bit private key to a corresponding encoded BTC address
The bitcoin developper pages show the steps in all details for type 1 addresses.

For the type 1 addresses, there is a good link here to test results.

Then there is HD wallets, Segwit, and many other extensions... 

Maybe it is good to start for type 1 addresses, and extend with your ideas of "under the hood crypto". I stick to Nate's comment though.