NESL: A Nested Data-Parallel Language NESL is a parallel language designed to express parallel algorithms and applications in a concise and clear manner, but yet achieve reasonable performance on a variety of parallel machines. The main two ideas behind the language are the support for nested data-parallel constructs, and a performance model based on keeping track of the work and depth of a computation. The nested data-parallel constructs allow one to easily express algorithms that use either parallel divide-and-conquer or nested parallel loops (these are hard to express in most existing data-parallel languages). The performance model makes it possible to guarantee asymptotic bounds on running time on various machine models. In this talk I will give an overview of NESL and go through some examples of algorithms, showing how they use nested parallelism and how performance is analyzed. I will also discuss the current implementation, which runs on the Cray C90, Connection Machine CM-5, IBM SP-2, and Intel Paragon. NESL is a call-by-value functional language and supports many of the features of standard functional languages, such as polymorphic types, higher order functions, and a limited form of Haskell style overloading. The compiler uses aggressive type specialization to achieve good performance on polymorphic code.