Robert “Corky” Cartwright

Corky Cartwright For the past 40 years, my principal research interest has been higher-level programming languages—improving our linguistic tools for describing computations. During that time, prevailing programming practice has advanced from writing programs in procedural form in assembly language to writing them in object-based form in C++, Java, C#, or Python. Clearly, some progress has been made, but much remains to be done. Fortunately, Java and C# have emerged as a credible languages for writing applications in object-oriented form. After more than 40 years of experience with safe programming languages in academia, the concept of safety (and the garbage collection technology that supports it) has finally crossed over into the commercial marketplace. To foster the wider acceptance of Java and better software engineering practice using Java, my current research focuses on four topics:

  • Developing extensions to Java, compatible with existing Java 5/6/7 JVMs, that foster developing parallel application programs that scale well as more cores are added to microprocessors. In joint work with Vivek Sarkar, my students and I are experimenting with various approaches to supporting “mostly functional” parallel programming in Java.
  • Developing “smart” programming environments that prove that Java programs are free of run-time errors. In essence, smart environments use static analysis to verify the preconditions for primitive program operations. This weak verification technology is particulary well-suited to Java, which is safe, but contains a multitude of run-time checks to enforce the preconditions of primitive program operations.
  • Developing production-quality pedagogic programming environments for Java including parallel extensions using Rice undergraduates as the primary workforce. The DrJava and forthcoming DrHJ environments are products of this research effort.
  • Developing programming languages and environments to support cyberphysical computing (CPS). In joint work with Wald Taha, my students and I are designing new languages and environments (such as Acumen) for modeling both physical systems and embedded computers that control them.
  • PLT-logoThe results of some of this research are being integrated in the Rice undergraduate curriculum. In a joint project with Vivek Sarkar, I am engaged in revising our core programming curriculum, which focuses on data-directed object-oriented design, to incorporate intuitively tractable parallelism. Many common applications can decomposed into a collection of asynchronous tasks where shared data is immutable and “futures” (an old idea from functional programming) are used to synchronize the production and consumption of task results. To minimize the notational and clerical burden on students, the new curriculum will heavily rely on the support of a new pedagogic programming envrionment called DrHabanero that provides linguistic support for immutable data and parallel programming constructs taken from Habanero Java, an extension of Java that supports decomposing programs into independent parallel tasks.