One of a pair of topics courses in high performance computing technology, with an emphasis on using KAUST’s research computing systems, focusing primarily on hardware architectures. Theoretical and achievable performance for processor, memory system, network, and I/O, primarily for large-scale scientific applications. Future architecture directions and limitations. This course focuses on the stresses put on scientific applications and their underlying mathematical algorithms by real-world architecture – not the abstract PRAM. It is intended to develop understanding of high performance computing architectures on which the student will develop and deploy applications. Students will meet some state-of-the-art discretization, solver, and execution frameworks. (AMCS/CS 311 and 312 may be taken without the other, or together in either order.) High performance computing algorithms and software technology, with an emphasis on using distributed memory systems for scientific computing. Theoretical and practically achievable performance for processors, memory system, and network, for large-scale scientific applications. The state-of-the-art and promise of predictive computational science and engineering. Algorithmic kernels common to linear and nonlinear algebraic systems, partial differential equations, integral equations, particle methods, optimization, and statistics. Computer architecture and the stresses put on scientific applications and their underlying mathematical algorithms by emerging architecture. State-of-the-art discretization techniques, solver libraries, and execution frameworks.