Beverly Sanders

Associate Professor
Department of Computer and Information Science and Engineering
University of Florida



Fall 2011:  COP5618  Concurrent Programming


My current research interests lie in the intersection of programming languages,  software engineering, and parallel/concurrent programming.

Patterns for Parallel 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.

Concurrent Programming and Relaxed Memory Models

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

  • Java Racefinder (JRF):  a model checking tool based on Java Pathfinder  that precisely identifies improperly synchronized Java programs and makes suggestions for correcting the source code
  • Java PathRelaxer (JPR):  a model checking tool based on Java Pathfinder that generates the surprising executions (i.e. the non-sequentially consistent executions) allowed by the Java memory model.  This allows verification of the behavior of an impropertly synchronized program (which may be occasionally desirable for performance reasons) and to better understand the JMM.

Software engineering and programming languages for high performance computing

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.