Integration of computer organization concepts such as data flow, instruction interpretation, memory systems, interfacing, and microprogramming with practical and systematic digital design methods such as behavioral versus structural descriptions, divide-and-conquer, hierarchical conceptual levels, trade-offs, iteration, and postponement of detail. Design exercises are accomplished using a hardware description language and simulation.