A.B. (1971) Harvard College
M.S. (1973) Stanford University
Ph.D. (1977) Stanford University
Ken Kennedy Institute for Information Technology
Email: cork@rice.edu
Phone: 713-348-6042
Office: DH3104
http://www.cs.rice.edu/~cork/
|
 |
Robert S. Cartwright
Professor of Computer Science
Programming & specification languages, program testing and debugging, programming logics, software engineering, formal semantics, and exact real arithmetic
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:
1. Developing extensions to Java, compatible with the existing Java 1.3 JVM, 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.
2. 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 particularly well-suited to Java, which is safe, but contains a multitude of run-time checks to enforce the preconditions of primitive program operations.
3. 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.
4. 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. I recently 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. Last semester, I revised our course on programming language principles to use Java as an alternative to Scheme for writing definitional interpreters. This summer I am offering a workshop titled TeachJava for high school teachers on how Java can be taught at high school level given the background in mostly functional programming provided by TeachScheme.
Selected Publications
Refereed Articles
J. Sasitorn, R. Cartwright "Component NextGen: A Sound and Expressive Component Framework for Java.." OOPSLA (2007).(Published)
J.Sasitorn, R. Cartwright "Deriving Components from Genericity." ACM Symposium (2007).(Published)
Theses
Yun (Angela) Zhu, Master of Science. "Acumen: An Environment for Rapid Prototyping of Cyber-physical Systems." (2010).(Committee Member)
Rajarshi Bandyopadhyay, Doctor of Philosophy. "Compiling dynamic languages via statically typed functional languages ." (2009).(Committee Member)
Rajarshi Bandyopadhyay, Ph.D. "Compiling dynamic languages via typed funtional languages." (2008).(Committee Member)
Roumen Kaiabachev, Master of Science. "A Transactional Compiler for E-FRP With Priorities*." (2008).(Committee Member)
Algis Rudys, Doctor of Philosophy. "Operating System-Style Protections for Language-Based Systems." (2007).(Committee Member)
Daniel Smith, Master of Science. "Completing the Java Type System." (2007).(Thesis or Dissertation Director)
James Sasitorn, Ph.D. "Componment NextGen: A Sound and Expressive Component Framework for Java." (2007).(Co-Director)
Mathias Ricken, Master of Science. "A Framework for Testing Concurrent Programs." (2007).(Thesis or Dissertation Director)
James Hsia, Master of Science. "Adding Support for Language Levels to DrJava." (2005).(Thesis or Dissertation Director)
James Sasitorn, Master of Science. "Efficient Implementation of First-class Polymorphic Methods in Java." (2005).(Thesis or Dissertation Director)
Jonathan Bannet, Master of Science. "Intent Based Security Analysis." (2005).(Committee Member)
Tao Ju, Doctor of Philosophy. "Building a 3D Atlas of the Mouse Brain." (2005).(Committee Member)
Xiaoxu Wang, Master of Science. "Analysis on the Assignment Landscape of 3-SAT Problems." (2005).(Committee Member)
Jonathan Bannet, Master of Science. "Soft Boundaries for Statically Enforceable Protection Domains." (2004).(Committee Member)
Stephan Ellner, Master of Science. "PreVIEW: an Untyped Graphical Calculus for Resource-aware Programming." (2004).(Committee Member)
Algis Rudys, Master of Science. "Termination and Rollback in Language-Based Systems." (2003).(Committee Member)
Amit Saha, Master of Science. "Energy Saving and Partition Bridging using Directional Antennas in Mobile Ad Hoc Networks." (2003).(Thesis or Dissertation Director)
Charles Reis, Master of Science. "A Pedagogic Programming Environment for Java that Scales to Production Programming." (2003).(Thesis or Dissertation Director)
Dennis Lu, Master of Science. "Dr.C#: A Pedagogic IDE for C# Featuring a Real-Eval-Print Loop." (2003).(Thesis or Dissertation Director)
Eric Allen, Doctor of Philosophy. "A First-Class Approach to Genericity." (2003).(Thesis or Dissertation Director)
Algis Rudys, Master of Science. "Termination and Rollback in Language-Based Systems." (2002).(Committee Member)
Brian Stoler, Master of Science. "A Framework for Building Pedagogic Java Programming Environments." (2002).(Thesis or Dissertation Director)
Eric Allen, Master of Science. "Efficient Implementation of Run-time Generic Types for Java." (2002).(Thesis or Dissertation Director)
Robert Findler, Doctor of Philosophy. "Behavioral Software Contracts." (2002).(Committee Member)
Tao Ju, Master of Science. "Convex Contouring of Volumetric Data." (2002).(Committee Member)
Paul Graunke, Master of Science. "Programming the Web with High Level Programming Languages." (2001).(Committee Member)
Paul Graunke, Master of Science. "Programming the Web with High-Level Programming Languages." (2001).(Committee Member)
Matthew Flatt, Doctor of Philosophy. "Programming Languages for Reusable Software Components." (1999).(Committee Member)
Lucy Hederman, Master of Science. "Compile Time Garbage Collection using Reference Count Analysis." (1998).(Committee Member)
Cormac Flanagan, Doctor of Philosophy. "Effective Static Debugging via Componential Set-Based Analysis." (1997).(Committee Member)
Amr Sabry, Ph.D. "The Formal Relationship between Direct and Continuation-Passing Style Optimizing Compilers: A Synthesis of Two Paradigms." (1995).(Committee Member)
Andrew Wright, Ph.D. "Practical Soft Typing." (1995).(Thesis or Dissertation Director)
Paul Havlak, Ph.D. "Interprocedural Symbolic Analysis." (1995).(Committee Member)
Ramarao Kanneganti, Ph.D. "Universal Domains for Sequential Compilation." (1995).(Thesis or Dissertation Director)
Amr Sabry, Doctor of Philosophy. "The Formal Relationship between Direct and Continuation-Passing Style Optimizing Compilers:A Synthesis of Two Paradigms." (1994).(Committee Member)
Andrew Wright, Doctor of Philosophy. "Practical Soft Typing." (1994).(Thesis or Dissertation Director)
Dorai Sitaram, Ph.D. "Models of Control and Their Implications for Programming Language Design." (1994).(Committee Member)
G. Fowler, Ph.D. "The Virtual Object Model for Distributed Hypertext." (1994).(Committee Member)
Paul Havlak, Doctor of Philosophy. "Interprocedural Symbolic Analysis." (1994).(Committee Member)
Elmootazbella Elnozahy, Ph.D. "Manetho: Fault Tolerance in Distributed Systems Using Rollback-Recovery and Process Replication." (1993).(Committee Member)
Rebecca Parsons, Ph.D. "Semantic Program Dependence Graphs." (1992).(Committee Member)
Michael Fagan, Doctor of Philosophy. "Soft Typing: An Approach to Type Checking for Dynamically Typed Languages." (1991).(Thesis or Dissertation Director)
Rene Rodriguez, Doctor of Philosophy. "Efficient Interprocedural Analysis and Optimization of Higher-order Programs." (1991).(Committee Member)
Vernon Lee, Ph.D. "Optimizing Programs Over the Constructive Reals." (1991).(Committee Member)
Eric Crank, Master of Science. "Parameter-Passing and the Lambda Calculus." (1990).(Committee Member)
David Johnson, Doctor of Philosophy. "Distributed System Fault Tolerance Using Message Logging and Checkpointing." (1989).(Committee Member)
Laura Arbilla, Master of Science. "A Correspondence between Scheme and the Lambda-CA-Calculus." (1989).(Committee Member)
Lucy Hederman, Master of Science. "Compile Time Garbage Collection using Reference Count Analysis." (1989).(Committee Member)
Michael Caplinger, Ph.D. "A Single Intermediate Language for Programming Environments." (1985).(Thesis or Dissertation Director)
Keith Cooper, Doctor of Philosophy. "Interprocedural Data Flow Analysis in a Programing Enviroment." (1983).(Committee Member)
Scott Marks, Doctor of Philosophy. "Optimization of Functional Programs." (1982).(Committee Member)
|