[PLT logo] Robert (Corky) Cartwright

For the past 25 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 assembly language to writing them in C++. Clearly, some progress has been made, but much remains to be done. Fortunately, Java has recently emerged as a credible alternative to C++ for applications programming. After more than 30 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 the existing Java 1.4/1.5 JVMs, that foster programming with reusable components. My students and I are experimenting with various approaches to adding genericity (type parameterization), "hygenic" mixins, and composable modules (as in ML) to the language.
  • 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 better compilation techniques for Java that are compatible with the JVM portability model. Java compilers can produce "warped code" that is byte code verifiable yet specifies how registers should be allocated.
  • Developing production-quality pedagogic programming environments for Java and other languages using Rice undergraduates as the primary workforce.
  • The results of this research are being integrated in the Rice undergraduate curriculum. Several years ago, I revised our second semester programming course (Comp 212) to emphasize systematic object-oriented program design using design patterns in Java. The course adapts and extends the programming design concepts taught in our introductory course (Comp 210) to the context of object-oriented programming. The course is suppported by the DrJava pedagogic programming environment developed by Rice undergraduate and graduate students under my direction. I also revised our course on programming language principles (Comp 311) to use Generic Java as an alternative to Scheme for writing definitional interpreters. More recently, I created a new course on production programming (Comp 312) that teaches an Extreme Programming approach to software development. Each summer, my colleagues Zung Nguyen, Stephen Wong, and I offer a workshop titled TeachJava for high school teachers on how object-oriented design in Java can be taught at high school level.

    Links:

  • Brief non-technical biography
  • Comp 212 Lecture Notes
  • Comp 311 Lecture Notes
  • Comp 613 Web Page
  • cork@rice.edu

    [Green Ribbon Logo]