Combinatorial scientific computing Foreword the ongoing era of high performance computing is filled with enormous potential for scientific simulation but also with daunting challenges. Architectures for high performance computing may have thousands of processors and complex memory hierarchies paired with a relatively poor interconnecting network performance. Due to the advances being made in computational science and engineering the applications that run on these machines involve complex multiscale or multiphase physics adaptive meshes and or sophisticated numerical methods. A key challenge for scientific computing is obtaining high performance for these advanced applications on such complicated computers and thus to enable scientific simulations on a scale heretofore impossible. A typical model in computational science is expressed using the language of continuous mathematics such as partial differential equations and linear algebra but techniques from discrete or combinatorial mathematics also play an important role in solving these models efficiently. Several discrete combinatorial problems and data structures such as graph and hypergraph partitioning supernodes and elimination trees vertex and edge reordering vertex and edge coloring and bipartite graph matching arise in these contexts. As an example parallel partitioning tools can be used to ease the task of distributing the computational workload across the processors. The computation of such problems can be represented as a composition of graphs and multilevel graph problems that have to be mapped to different microprocessors