The subject of computer architecture as currently taught in most computer engineering and computer science programs is a mixture of architectural principles, organizational strategies, and implementation techniques. This blurring of the hierarchy of system levels that characterize the structure of a computer has made it very difficult for students ( and. often instructors as well) to determine what were the forces that led to the design decisions they have seen reflected in machines.