Rice
FIS

FIS image header
  •  
  •  
  •  
  •  
  •  
Download 
Scholarly Interest Report
         
Robert S. Cartwright
Professor
Professor of Computer Science
 
e-mail:cork@rice.edu
 
  • A.B. (1971) Harvard College
  • M.S. (1973) Stanford University
  • Ph.D. (1977) Stanford University
 
Primary Department
   Department of Computer Science
Picture
 
Department Affiliations
 
  • Ken Kennedy Institute for Information Technology
  •  
    Websites
     Website for the DrJava pedagogic IDE
     
    Research Areas
     Programming & specification languages, program testing and debugging, programming logics, software engineering, formal semantics, exact real arithmetic, energy-efficient computation using lightweight languages.
     
    Robert 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:

    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.
     
    Teaching Areas
     Programming languages
     
    Selected Publications
     Refereed articles
     

    W. Taha, K. Atkinson, P. Brauner, Y. Zeng, R. Cartwright, A. Duracz, X. Fei, R. Philippsen "Developing A First Course on Cyber-Physical Systems." ACM SIGBED Review (to appear in 2016)In Press

     
     

    Y. Zeng, C. Rose, W. Taha, A. Duracz,K. Atkinson, R. Philippsen, R. Cartwright, M. O’Malley "Modeling Basic Aspects of Cyber-Physical Systems." Journal of Software Engineering for Robotics (under revision)In Revision

     
     

    D. Smith, R. Cartwright "Java Type Inference is Broken: Can We Fix It?." OOPSLA (2008)

     
     

    J. Sasitorn, R. Cartwright "Component NextGen: A Sound and Expressive Component Framework for Java.." OOPSLA (2007)

     
     

    J.Sasitorn, R. Cartwright "Deriving Components from Genericity." ACM Symposium (2007)

     
     

    R. Cartwright and C. Reis "Taming a Professional IDE for the Classroom." SIGCSE 2004 (2004)

     
     Articles
     

    Robert Cartwright; Walid Taha "Some Challengers for Model-Based Simulation. In the 4th Analytic Virtual Integration of Cyber-Physical Systems Workshop." Submitted


    http://www,effective-modeling.org/p/publications/conference/avicps13.pdf
     
     

    Robert Cartwright; Walid Taha; Roland Philippsen; Yingfu Zeng "A First Course on Cyber Physical Systems." 


    http://doc.effective-modeling.org/p/publications/conference/cpsed13.pdf
     
     

    A Core Language for Executable Models of Cyber Physical Systems (Preliminary Report).  In The Second International Workshop on Cyber-Physical Networking Systems (CPNS 2012), April 2012 (with W. Taha, Y. Zeng, P. Brauner, V. Gaspes, A. Ames, and A. Chapoutot)

     
     Refereed conference papers
     

    W. Taha, A. Duracz, Y. Zeng, K. Atkinson, F. Bartha, P. Brauner, J. Duracz1, F. Xu1, R. Cartwright, M. Koneˇcny ́, E. Moggi, J. Masood, P. Andreasson, J. Inoue, A. Santanna, R. Philippsen, A. Chapoutot, M. O’Malley, A. Ames, V. Gaspes, L. Hvatum, S. Mehta, H. Eriksson8, and C. Grante "Acumen: An Open-source Testbed for Cyber-Physical Systems Research." 2015 EAI International Conference on CYber physiCaL systems, iOt and sensors Networks (CYCLONE).


    http://doc.effective-modeling.org/p/publications/conference/cyclone15.pdf
     
     

    R. Cartwright & c. Reis "A Friendly Face for Eclipse." OOPSLA 2003 Eclispe Technology Exchange (eTX) Workshop (2003)

     
     

    R. Cartwright, E. Allen, & J. Bannet "A First Class Approach to Genericity." OOPSLA 2003 (2003)

     
     

    R. Cartwright, E. Allen, and C. Reis "Production Programming in the Classroom." SIGCSE 2003 (Mar 2003)

     
     

    E. Allen and C. Reis, R. Cartwright "Production Programming in the Classroom." SIGCSE 03 (2003) In Press

     
     

    Eric Allen and Brian Stoler, R. Cartwright "DrJava: A Lightweight Pedagogic Environment for JAVA." SIGCSE 2002 (2002)

     
     

    Eric Allen and Brian Stoler, R. Cartwright "Efficient Implementation of Run-Time Generic Types for Java." IFIP WG2.1 Working Conference on Generic Programming (2002)

     
     

    Eric Allen, R. Cartwright "A First-Class Approach to Java Genericity." TLDI 2003 (2003) Submitted

     
     

    Eric Allen, R. Cartwright "The Case for Run-time Types in Generic Java." Proceedings of Principles and Practice of Programming in java (2002)

     
     Other
     

    Robert Cartwright "Compatible Genericity with Run-time Types for the Java PM Programming Language." Proceedings of the 1998 ACM Symposium on Object-Oriented Programming Systems Languages and Applications (1998)

     
    Presentations
     Invited Talks
     

    "Software Engineering for a New Millennium." University of Victoria, Canada. (November 2004)

     
     Lectures
     

    The Future of Computer Science Education, Cypress Woods High School, Computer Science Teachers Association Meeting, Dec 3, 2011

     
     

    "Adding First Class Generic Types to java." IFIP WG 2.8 Working Group on Functional Programming Meeating, Las Vegas, Nevada. (May 2002)

     
     

    "Efficient Implementation of Run-time Generic Types for Java." IFIP WG2.1 Working Conference on Generic Programming, Darmstadt, Germany. (July 2002)

     
     Other
     

    "Compatibly Extending the Java Programming Language." Computer Science Colloquium, Rennselaer Polytechnical Institute, New York. (September 2000)

     
     

    "Design Patterns in the First Year." National Science Foundation Workshop on First Year Instruction, Duke University. (July 2000)

     
     

    "Java Technology Research." IBM Java Performance Group, Austin, Texas. (May 2000)

     
     

    "Safety is Imperative in AP Computer Science." Future of CS AP (SIGCSE Panel presentation), Austin, Texas. (March 2000)

     
     

    "Java: Fashion or Future." Keck Center Lecture, Rice University, Houston, Texas. (September 1999)

     
     

    "Compatible Genericity with Run-time Types for the Java Programming Language." OOPSLA '98, Vancouver, British Columbia, Canada. (October 1998)

     
     

    "Design Patterns in CS2?." Workshop on Object-Oriented Curricula: the Future of CS2 (OOPSLA '98), Vancouver, British Columbia, Canada. (October 1998)

     
     

    "Refined Java: Implementing Type Parameterization without Modifying the JVM." Java Genericity Workshop, Foundations of Object-Oriented Programming '98, San Diego, California. (January 1998)

     
     

    "Refined Java: Implementing Type Parameterization without Modifying the JVM." Computer Science Colloquium, Brown University. (February 1998)

     
    Supervised Theses & Dissertations
     Scott C. Marks, Doctor of Philosophy Optimization of Functional Programs. (1982) (Thesis Committee Member)

     Keith Cooper, Doctor of Philosophy Interprocedural Data Flow Analysis in a Programing Enviroment. (1983) (Thesis Committee Member)

     Michael Alan Caplinger, Ph.D. A Single Intermediate Language for Programming Environments. (1985) (Thesis Director)

     David Bruce Johnson, Doctor of Philosophy Distributed System Fault Tolerance Using Message Logging and Checkpointing. (1989) (Thesis Committee Member)

     Lucy Hederman, Master of Science Compile Time Garbage Collection using Reference Count Analysis. (1989) (Thesis Committee Member)

     Laura Arbilla, Master of Science A Correspondence between Scheme and the Lambda-CA-Calculus. (1989) (Thesis Committee Member)

     Eric Crank, Master of Science Parameter-Passing and the Lambda Calculus. (1990) (Thesis Committee Member)

     Vernon Lee, Ph.D. Optimizing Programs Over the Constructive Reals. (1991) (Thesis Committee Member)

     Michael Fagan, Doctor of Philosophy Soft Typing: An Approach to Type Checking for Dynamically Typed Languages. (1991) (Thesis Director)

     Rene Rodriguez, Doctor of Philosophy Efficient Interprocedural Analysis and Optimization of Higher-order Programs. (1991) (Thesis Committee Member)

     Rebecca Parsons, Ph.D. Semantic Program Dependence Graphs. (1992) (Thesis Director)

     Elmootazbella N. Elnozahy, Ph.D. Manetho: Fault Tolerance in Distributed Systems Using Rollback-Recovery and Process Replication. (1993) (Thesis Committee Member)

     Amr A. Sabry, Doctor of Philosophy The Formal Relationship between Direct and Continuation-Passing Style Optimizing Compilers:A Synthesis of Two Paradigms. (1994) (Thesis Committee Member)

     Paul Havlak, Doctor of Philosophy Interprocedural Symbolic Analysis. (1994) (Thesis Committee Member)

     Andrew K. Wright, Doctor of Philosophy Practical Soft Typing. (1994) (Thesis Director)

     Dorai Sitaram, Ph.D. Models of Control and Their Implications for Programming Language Design. (1994) (Thesis Committee Member)

     G. Gerald Fowler, Ph.D. The Virtual Object Model for Distributed Hypertext. (1994) (Thesis Committee Member)

     Ramarao Kanneganti, Ph.D. Universal Domains for Sequential Compilation. (1995) (Thesis Director)

     Andrew Wright, Ph.D. Practical Soft Typing. (1995) (Thesis Director)

     Amr A. Sabry, Ph.D. The Formal Relationship between Direct and Continuation-Passing Style Optimizing Compilers: A Synthesis of Two Paradigms. (1995) (Thesis Committee Member)

     Paul Havlak, Ph.D. Interprocedural Symbolic Analysis. (1995) (Thesis Committee Member)

     Cormac Flanagan, Doctor of Philosophy Effective Static Debugging via Componential Set-Based Analysis. (1997) (Thesis Committee Member)

     Lucy Hederman, Master of Science Compile Time Garbage Collection using Reference Count Analysis. (1998) (Thesis Committee Member)

     Matthew Flatt, Doctor of Philosophy Programming Languages for Reusable Software Components. (1999) (Thesis Committee Member)

     Paul Graunke, Master of Science Programming the Web with High-Level Programming Languages. (2001) (Thesis Committee Member)

     Tao Ju, Master of Science Convex Contouring of Volumetric Data. (2002) (Thesis Committee Member)

     Robert B. Findler, Doctor of Philosophy Behavioral Software Contracts. (2002) (Thesis Committee Member)

     Algis Rudys, Master of Science Termination and Rollback in Language-Based Systems. (2002) (Thesis Committee Member)

     Brian R. Stoler, Master of Science A Framework for Building Pedagogic Java Programming Environments. (2002) (Thesis Director)

     Algis Rudys, Master of Science Termination and Rollback in Language-Based Systems. (2003) (Thesis Committee Member)

     Eric Allen, Doctor of Philosophy A First-Class Approach to Genericity. (2003) (Thesis Director)

     Dennis Lu, Master of Science Dr.C#: A Pedagogic IDE for C# Featuring a Real-Eval-Print Loop. (2003) (Thesis Director)

     Charles S. Reis, Master of Science A Pedagogic Programming Environment for Java that Scales to Production Programming. (2003) (Thesis Director)

     Stephan Ellner, Master of Science PreVIEW: an Untyped Graphical Calculus for Resource-aware Programming. (2004) (Thesis Committee Member)

     Jonathan Bannet, Master of Science Soft Boundaries for Statically Enforceable Protection Domains. (2004) (Thesis Committee Member)

     James Sasitorn, Master of Science Efficient Implementation of First-class Polymorphic Methods in Java. (2005) (Thesis Director)

     Jonathan Bannet, Master of Science Intent Based Security Analysis. (2005) (Thesis Committee Member)

     Tao Ju, Doctor of Philosophy Building a 3D Atlas of the Mouse Brain. (2005) (Thesis Committee Member)

     James Sasitorn, Master of Science Efficient Implementation of First-class Polymorphic Methods in Java. (2005) (Thesis Director)

     Jonathan Bannet, Master of Science Intent Based Security Analysis. (2005) (Thesis Committee Member)

     James Hsia, Master of Science Adding Support for Language Levels to DrJava. (2005) (Thesis Director)

     Xiaoxu Wang, Master of Science Analysis on the Assignment Landscape of 3-SAT Problems. (2005) (Thesis Committee Member)

      Michael Jensen, Master of Science Growing DrJava to cope with language extensions carried out in Java 5.0. (2006) (Thesis Director)

     Mathias Ricken, Master of Science A Framework for Testing Concurrent Programs. (2007) (Thesis Director)

     Algis Rudys, Doctor of Philosophy Operating System-Style Protections for Language-Based Systems. (2007) (Thesis Committee Member)

     Daniel Smith, Master of Science Completing the Java Type System. (2007) (Thesis Director)

     James Sasitorn, Ph.D. Componment NextGen: A Sound and Expressive Component Framework for Java. (2007) (Thesis Director)

     Rajarshi Bandyopadhyay, Ph.D Compiling dynamic languages via typed funtional languages. (2008) (Thesis Committee Member)

     Roumen Nikolaev Kaiabachev, Master of Science A Transactional Compiler for E-FRP With Priorities*. (2008) (Thesis Committee Member)

     Rajarshi Bandyopadhyay, Doctor of Philosophy Compiling dynamic languages via statically typed functional languages . (2009) (Thesis Committee Member)

     Cherif Salama, Doctor of Philosophy Static Analysis for Circuit Families. (2010) (Thesis Committee Member)

     Yun (Angela) Zhu, Master of Science Acumen: An Environment for Rapid Prototyping of Cyber-physical Systems. (2010) (Thesis Committee Member)

     Daniel Smith, Doctor of Philosophy Designing Type Inference for Typed Object-Oriented Languages. (2010) (Thesis Director)

     Shams Mahmood Imam, Master of Science Habanero-Scala: A Hybrid Programming model integrating Fork/Join and Actor Models. (2011) (Thesis Committee Member)

     Mathias Ricken, Doctor of Philosophy A Framework for Testing Concurrent programs. (2011) (Thesis Director)

     Moez A. AbdelGawad, Doctor of Philosophy NOOP A Mathematical Model Of Object-Oriented Programming. (2012) (Thesis Director)

     Jun Inoue, Doctoral Reasoning About Multi-stage Programs. (2013) (Thesis Committee Member)

    Awards, Prizes, & Fellowships
     Member, College Board Ad Hoc Computer Science Advanced Placement Committee (1999 - present)

     Member, IFIP Working Group 2.8 on Functional Programming Languages (1995 - present)

     Chair of Pre-College ACM Committee, ACM (1997 - present)

     Member, The Coalition to Diversify Computing, Affiliated with ACM, ADMI, CRA, and IEEE Computer Society (1996 - present)

     Member, Board of Directors, Computing Research Association (1994 - present)

     Member, ACM Education Board (1997 - present)

     Ex-officio Member, ACM Education Board, Association of Computing Machinery (1997 to present)

     Member, The Coalition to Diversify Computing, Affiliated with ACM, ADMI, CRA, and IEEE Computer Society (1996 to present)

     Member, IFIP Working Group 2.8 on Functional Programming Languages (1995 to present)

     Review Panel, Postdoctoral Research Associates in Experimental Computer Science, National Science Foundation (1999)

     Member, College Board Ad Hoc Computer Science Advanced Placement Committee (1999)

     Member, Board of Directors, Computing Research Association (1994 to present)

     Chair of Pre-College ACM Committee, Association of Computing Machinery (1997 - present)