
Computer architecture is the field of designing (and studying) how computer systems are constructed, by dividing a system into subsystems and defining the interfaces between them.
The class will focus heavily on how the combination of hardware and software achieves performance through parallelism:
pipelining, multicore CPUs in shared-memory systems, data parallel programming as exemplified by GPU programming, and distributed-memory,
message-passing systems such as supercomputers exemplified by MPI.