Foundations of Computing Hardware Software and Number Systems