Teaching Computer Hardware Abstractions