[PLT logo] Robert (Corky) Cartwright

For the past 30 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 in assembly language to writing them in object-based form in C++, Java, or C#. 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 the existing Java 5/6/7 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 some of this research are being integrated in the Rice undergraduate curriculum. I am currently engaged in developing a new CS2 (second semester) course for majors entitled "Principles of Program Design". It presumes some programming experience from a CS1 (first-semester) course, but no specific expertise in a particular language or programming style. The new course covers the major topics from the CS1/CS2 sequence (Comp 210/212) that Matthias Felleisen and I developed in the 1990's. The new course covers simple data-directed functional programming in Scheme and basic object-oriented design (using design patterns) in Java. To minimize the notational and clerical burden on students, the course relies heavily on the support of the pedagogic programming envrionments DrScheme and DrJava. DrScheme and DrJava were originally developed at Rice under the direction of Matthias Felleisen and myself, respectively. DrScheme is supported by Matthias and his students Matthew Flatt, Shriram Krishnamurthi, and Robby Findler, who have all dispersed to other universities. I still direct the evolution and maintenance of DrJava with the support of my students. The web site for the new course is located at http://hope.cs.rice.edu/twiki/bin/view/Teaching/211

    Links:

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

    [Green Ribbon Logo]