Computer architecture is the study of the interface between the hardware and software in computer systems, ranging from supercomputers to servers to desktop computers to notebooks to handheld computers. The program of study emphasizes design tradeoffs in implementing those interfaces both in hardware and software. There are undergraduate, masters, and doctoral programs specializing in Computer Architecture and Embedded Processors.