Fall 2011: COP5618 Concurrent Programming
My current research interests lie in the intersection of programming languages, software engineering, and parallel/concurrent programming.
Our goal is to use patterns organized into a pattern language to capture the essence of how expert parallel programmers think, and communicate this essential understanding in a way that other programmers can easily master. Earlier work was published in the book Patterns for Parallel Programming.
Optimizations performed by hardware and compilers that are safe for sequential code may cause improperly synchronized concurrent programs to interact with the memory in surprising ways. Our work in this area includes
This project is a collaboration with computational chemists to support the development of coupled cluster methods to calculate quantum mechanical properties of molecules. These methods involve highly complex, extremely computationally intensive algorithms and can exploit the most powerful systems. The Super Instruction Architecture consists of a domain specific programming language and its runtime system that make it easier to express algorithms in this domain and help manage the extremely large data structures that arise during these calculations. It has been used to implement ACESIII, a package for parallel computational chemistry. Our work involves novel uses of programming language and software engineering technology to support the development and tuning of these extreme parallel programs.