Foundations of Computing: Hardware and Software Essentials