[Thumbnail photo] Robert (Corky) Cartwright [PLT logo]

For over 40 years, my principal research interest has been developing higher-level programming languages and environments---improving our linguistic tools for describing and validating computations. During that time, prevailing programming practice has advanced from writing programs in procedural form in assembly language to writing them in object-based or functional form in Java, C++, Scala, C#, F#, Swift, or Python. Clearly, some progress has been made, but much remains to be done. Fortunately, Java, C#, Scala, F#, and Swift have emerged as a credible type-safe 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 automatic storage management technology that supports it) has finally crossed over into the commercial marketplace. To foster the wider acceptance of type-safe languages and better software engineering practices that leverage them, my current research focuses on four topics:

  • Developing extensions to Java, Scala, and Swift that foster developing parallel application programs that scale well as more cores are added to microprocessors. I an ardent advocate of a "mostly functional" approach to developing parallel programming applications.
  • Developing ``smart'' programming environments that prove that type-safe programs are free of run-time errors. In essence, smart environments use static analysis to verify the preconditions for primitive program operations.
  • Developing production-quality pedagogic programming environments for Java, Scala, and Swift using Rice undergraduates as the primary workforce. The DrJava and forthcoming DrScala environments are products of this research effort.
  • Developing a programming language (called FAST) and supporting environment for developing implicit programs in which program parameters are dynamically adjusted by the language run-time in accord with an platform-dependent intent specification provided by the user. The intent typically focuses on minimizing or maximizing a platform-dependent measure such as energy usage or performance while meeting platform-independent accuracy or quality constraints.
  • Links:

  • Brief non-technical biography
  • DrJava Web Site
  • Lecture Notes on Object-Oriented Design (pdf)
  • Comp 211 Web Site
  • Comp 411 Web Site
  • cork@rice.edu