Rice
FIS

FIS image header
  •  
  •  
  •  
  •  
  •  
Download 
Scholarly Interest Report
         
Walid M. Taha
Adjunct Professor
Adjunct Professor of Computer Science
 
e-mail:taha@rice.edu
 
  • B.Sc. Computer Engineering (1993) Kuwait University
  • Ph.D. Computer Science and Engineering (1999) Oregon Graduate Institute
 
Primary Department
   Department of Computer Science
Picture
 
Websites
 Taha's home page
 
Research Areas
 Embedded systems, software engineering, programming languages, compilers, type theory, automated proof-checkers, and semantics
 
Research Interests
 My interest is in the design and implementation of resource-aware progrmaming languages, and in demonstrating the positive impact of such languages on software processes and products. Resource-awareness means that the language has a clear underlying cost model, and that the programmer has fine control over the cost of programs. As embedded systems play an increasingly important role in our daily life, demand for technologies that can help enhance the reliability of such systems will continue to increase.

I have investigated two examples of resource-aware languages. My doctoral work was on the theory and applications of multi-stage languages (such as MetaML and MetaOCaml) and I have continued to work in this area ever since. More recently, I have become also interested in resource-bounded languages (such as RT-FRP and E-FRP). The following describes my work in each of these areas in more detail.
 
General Research Statement
 Software is rapidly becoming a critical component of almost every appliance and device around us, including cars, microwaves, defense systems, and medical equipment. As a building material, software's remarkable advantage is that it can be altered and duplicated at virtually no cost. But it is also remarkably fragile: An unintended setting for one bit - one indivisible unit of information - can alter the operation of the largest machine-controlled physical system. While research on high-level languages has produced a wide range of innovative abstraction mechanisms that make programs easier to understand, such mechanisms either have an associated runtime cost, require the programmer to relinquish control over resources, or both. Embedded software components running inside physical devices must run for long periods of time with limited resources. These strict constraints have resulted in embedded software development depending on very low level tools and notation that make programs difficult to understand, check, and manage. A wide range of practical factors, including the constant influx of new devices and the ever increasing demand for interoperability make addressing this problem an urgent matter. The goal of my research is to show that a novel class of languages called Resource-aware Programming (RAP) languages can be an effective approach to addressing this problem. A RAP languages provides two key mechanisms:
1. Allowing the programmer to write programs where part of the computation is performed on the development platform, and the rest is performed on the embedded platform. This facility can allow the programmer to use almost any abstraction mechanism without paying a runtime penalty on the embedded platform. While McIlroy's work on macros in 1960 marked the start of efforts to support this otherwise intuitive functionality, realizing this support has proven surprisingly challenging. A promising technique for achieving this goal is multi-stage programming (MSP), proposed in my doctoral dissertation and extensively developed since. Most recently I proposed the notion of environment classifiers, and showed that it subsumes various previously incompatible approaches to typing MSP languages. I also used MSP to resolve two long-standing open research questions. The first is how to achieve "optimal specialization" in typed languages. This question was posed by the partial evaluation pioneer Neil Jones and had remained open for over a decade despite several efforts before ours. The second is how to define an expressive, type-safe, macro system and to define its behavior rigorously and concisely. Along side these efforts on foundations, I have led the development and implementation of an MSP language called MetaOCaml. This implementation has proven invaluable for experimental work by our research group and by several other groups around the world.

2. Providing static analyses that ensure - ahead of time - that any computation remaining for the embedded platform will be resource-bounded. Most of our early work in this area focused on ensuring safety in the embedded platform. Our first result on resource-boundedness showed that RAP languages can statically guarantee that generated (embedded platform) programs are heap-bounded. As an in-depth case study, we showed that a RAP language can express the Fast Fourier Transform (FFT) with source code only marginally larger than the text-book definition of the Cooley-Tuckey recurrence. This RAP program generates a circuit with an optimal number of multiplications and additions. Further work led to a new insight about FFT itself. Our generator, which uses only a small number optimizations, can generate circuits with arithmatic operation counts that precisely match those of two well-established benchmarks (Split-Radix and FFTW). Furthermore, which benchmark is matched depends only on how multiplication of complex numbers is implemented. Viewed as software, the FFT implementations we generate run within a small factor of the FFTW system.

Current activity is focused on applying RAP techniques to the domain of device driver development. In addition to dealing with the basic resources of time and space, this domain requires addressing event-driven computation as well as concurrency. We also continue to explore hardware circuit design as the next challenging domain for our case studies. We expect that incorporating layout and routing information into a RAP language is possible, and that such a language would provide hardware designers with a tool that addresses some of the most pressing challenges in that domain.
 
Teaching Areas
 Programming languages
 
Selected Publications
 Abstracts
 

Taha, Alkabani, Andraos, Gillenwater, Malecha, Zhu, Grundy, O'Leary "Hardware descriptions as two-level computations."  (2007)

 
 Refereed articles
 

Kiselyov, Swadi, and Taha "A Methodology for Generating Verified Combinatorial Circuits." ACM International conference on Embedded Software (EMSOFT) (2004)

 
 

Makholm and Hughes, W.M. Taha "Tag Elimination."  (2002) Submitted

 
 

Pace, W.M. Taha "Imperative Programming." UNESCO publication (2002) Submitted

 
 

Sheard, W.M. Taha "Interpreters and compilers." UNESCO publication (2002) Submitted

 
 

W.M. Taha "Macros as Multi-Stage Computations."  (2002) Submitted

 
 

W.M. Taha "Sound Reductions for Multi-Stage Programming Language."  (2002) Submitted

 
 Articles
 

Eckhardt, Kaiabachev, Pasalic, Swadi, Taha "Implicitly Heterogeneous Multi-stage Programming." New Generation Computing, 25 (August 2007)

 
 Editor of books
 

"Proceedings of ACM SIGPLAN International Workshop on the Semantics, Applications, and Implementation of Program Generation." The ACM Digital Library

 
 

"Proceedings of ACM SIGPLAN/SIGSOFT International Conference on Generative Programming and Component Enginering (GPCE 2002)." The ACM Digital LibrarySubmitted

 
 Book chapters
 

W. Taha "A Gentle Introduction to Multi-stage Programming, Part II." Lecture Notes in Computer Science (2008)

 
 Refereed conference papers
 

C. Salama, Malecha, W. Taha, Grunday, O'Leary "Synthesizable High-Level Hardware Description Languages."  (2008)

 
 

Ellner, Taha "The Semantics of Graphical Languages."  (2007)

 
 

Fogarty, Pasalic, Siek and Taha "Concoqtion: Indexed Types Now."  (2007)

 
 

Kaiabachev, Taha and Zhu "E-FRP with Priorities."  (2007)

 
 

Siek, Taha "Gradual Typing for Objects."  (2007)

 
 

Taha and Johann "Staged Notational Definitions." International Conference on Generative Programming and Component Engineering (GPCE) (2003)

 
 

Taha and Nielsen "Environment Classifiers." International Conference on Principles of Programming Languages (POPL) (2003)

 
 

Taha, Hudak, and Wan "Generating Heap-Bounded Programs in a Functional Setting." International Conference on Embedded Software (EMSOFT) (2003)

 
 

Calcagno, Huan, Leroy, T.W. Taha "A Bytecode-compiled, Type-safe, Multi-stage Language."  (2002) Submitted

 
 

Ostrovsky and Prasad, W.M. Taha "Towards a Primitive Higher Order Calculus of Broadcasting Systems." International Conference on Principles and Practice of Declarative Programming (PPDP) (2002)

 
 

Pasalic and Sheard, W.M. Taha "Tagless Staged Interpreters for Typed Languages." International Conference on Functional Progamming (ICFP) (2002)

 
 

Wan and Hudak, W.M. Taha "Event-driven FRP." International Conference on Practical Aspects of Declarative Languages (PADL) (2002)

 
 Conference papers
 

W. Taha "Domain-Specific Languages."  (2008)

 
 

Eckhardt, Kaiabachev, Pasalic, Swadi, and Taha. "Implicitly Heterogeneous Multi-Stage Programming."  (2005)

 
 

Calcagno, Moggi, and Taha "ML-like Inference for Classifiers." European Symposium on Programming Languages (ESOP) (2004)

 
 

Czernecki, O'Donnell, Striegnitz, and Taha "DSL Implementation in MetaOCaml, Template Haskell, and C++." Domain-specific Programming Languages (DSPG) (2004)

 
 

Kiselyov, Swadi, and Taha "A Methodology for Generating Verified combinatorial Circuits." ACM International Conference on Embedded Software (EMSOFT) (2004)

 
 

Walid Taha "A Gentle Introduction to Multi-stage Programming." Domain-specific Programming Languages (DSPG (2004)

 
 Other
 

Andraos, Gillenwater, MAlecha, Zhu, Taha,Grundy, O'Leary "Synthesizable Verilog." PArticipants Processdings of the Workshop on Hardware design and Functional Languages (HFL) (2007)

 
 

"Concoqtion: An extension to MetaOCaml with indexed types.."  (2007)

 
 

Calcagno, Taha, Huang, and leroy "Implementing Multi-stage Languages using ASTs, Gensym, and Reflection." International Confference on Generative programming and Component Engineering (GPCE) (2003)

 
Presentations
 Invited Talks
 

"The Verilog Preprocessor." Semiconductor Research Consortium (SRC) project review meeting, Cadence, Berkeley, CA. (March 2008)

 
 

""Resource-Aware Programming"." Stanford Research Institute (SRI), Menlo Park, CA. (January 2007)

 
 

"Resource-Aware Programming." Google Tech Talk, Google, Mountain View, CA. (January 2007)

 
 

"Resource-Aware Programming." CHESS project seminar, Univesity of California at Berkeley, Berkeley, CA. (January 2007)

 
 

"Resource-Aware Programming." Stanford University, Palo Alto, CA. (January 2007)

 
 

"Resource-Aware Programming." Kestrel, Palo Alto, CA. (January 2007)

 
 

"Resource Aware Programming." National Instrument's NI Week, Austin, Texas. (August 2004)

 
 

"A Gentle Introduction to Multi-stage Programming." University of Texas, Austin, TX. (January 2003)

 
 

"Toward Better Support for Resource Aware Programming (RAP) Languages." Department of Computer Science, Rice University, Houston, Texas. (2002)

 
 

"Toward Better Support for Resource Aware Programming (RAP) Languages." Vanderbilt University, Computer Science Department, Nashville, Tennessee. (2002)

 
 

"Toward Better Support for Resource Aware Programming (RAP) Languages." The University of Chicago, Computer Science Department, Chicago, Illinois. (2002)

 
 Lectures
 

"Environment Classifiers." International Conference on Principles of Programming Languages, New Orleans, Louisiana. (January 2003)

 
 

"A Bytecode-Compiled, Type-Safe, Multi-Stage Language." Massachusetts Institute of Technology, Cambridge, Massachusetts. (2002) With Cristiana Calcagno, Liwen Huang, Xavier Leroy

 
 

"Toward Better Language Support for Resource-Aware Programming (RAP) ." Boston University, Boston, Massachusetts. (2002)

 
 Other
 

"A Methodology for Generating Verified Combinatorial Circuits." Intel Corporation, Portland, Oregon. (July 2004)

 
 

"A Methodology for Generating Verified Combinatorial Circuits." Oregon Graduate Institute, Portland, Oregon. (July 2004)

 
 

"Generating Heap-bounded Programs in a Functional." Yale University, New Haven, Connecticut. (February 2004)

 
 

"Generating Heap-bounded Programs in a Functional Setting." ISIP WG 2.11 Meeting, S. Emilion, France. (May 2004)

 
 

"Multi-stage Programming in MetaOCaml." GPCE Tutorial, Vancouver, Canada. (October 2004)

 
 

"Resource Aware Programming." Schlumberger, Sugarland, Texas. (May 2004)

 
 

"Resource Aware Programming." Schlumberger visit to Rice University, Houston, Texas. (June 2004)

 
 

"Resource Aware Programming." Rice University, Department of Computer Science, Houston, Texas. (March 2004)

 
 

"a Methodology for Generating Verified Combinatorial Circuits." ACM International Conference on Embedded Software (EMSOFT), Pisa, Italy. (September 2004)

 
 

"A Proposal for an IFIP WG on Domain-specific Program Generation (DSPG)." Sankt Wolfgang, Germany. (June 2003)

 
 

"Generating Heap-bounded Programs in a Functional Setting." International Conference on Embedded Software (EMSOFT 2003), Philadelphia, Pennsylvania. (October 2003)

 
 

"Generating Heap-bounded Programs in a Functional Setting." Pizza Talk, Rice University, Houston, Texas. (October 2003)

 
 

"Implementing Multi-stage Languages using AST's, Gensym, and Reflection." International Conference on Generative Programming (GPCE 2003), Erfurt, Germany. (September, 2003)

 
 

"Multi-stage Programming in MetaOCaml." GPCE Tutorial, Erfurt, Germany. (September 2003)

 
 

"Opportunities for Collaboration on Resource Aware Programming." National Instruments, Teleconference Presentation. (July 2003)

 
 

"Opportunities for Collaboration on Resource Aware Programming." National Instruments, (March 2003)

 
 

"Resource Aware Programming." Department of Computer Science, University of Houston, Houston, Texas. (November 2003)

 
 

"Resource Aware Programming." Affiliates Meeting, Rice University, Houston, Texas. (October 2003)

 
 

"Staged Notational Definitions." International Conference on Generative Programming (GPCE 2003), Erfurt, Germany. (September 2003)

 
 

"Towards Better Support for Resource Aware Programming." Pizza Talk, Rice University, Houston, Texas. (March 2003)

 
 

"Towards Better Support for Resource Aware Programming." National Instruments, Austin, Texas. (January 2003)

 
 

"Towards Better Support for Resource Aware Programming." Dagstuhl, Germany. (March 2003)

 
 

"Towards Better Support for Resource Aware Programming." Passau, Germany. (June 2003)

 
 

"Towards Better Support for Rresource Aware Programming." utrecht, The Netherlands. (July 2003)

 
 Seminar Speaker
 

"A RAP extension of Verilog." Semiconductor Research Consortium (SRC) project review meeting, Salt Lake City, UT. (April 2007)

 
 

"Concoqtion: Indexed types now!." International Workshop on Partial Evaltion and Program Manipulation, Nice, France. (January 2007)

 
 

"Hardware and Resource-Aware Programming." International Workshop on HArdware and Functional Languages, Braga, Portugal. (March 2007)

 
Editorial Positions
 Editor, Proceedings of the ACM SIGPLAN/SIGSOFT International Conference on Generative Programming and Component Engineering (GPCE 2002), with Charles Consel and Don Batory; Lecture Notes in Computer Science (LNCS), volume 2487. (2002 - 2002)

Supervised Theses & Dissertations
 Charles S. Reis, Master of Science A Pedagogic Programming Environment for Java that Scales to Production Programming. (2003) (Thesis Committee Member)

 John Garvin, Master of Science RCC: A Compiler for the R Language for Statistical Computing. (2004) (Thesis Committee Member)

 Stephan J. Ellner, Master of Science PreVIEW: An Untyped Graphical Calculus for Resource-aware Programming. (2004) (Thesis Director)

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

 Scott A. Crosby, Master of Science Algorithmic Attacks and Timing Leaks in Distributed Systems. (2005) (Thesis Committee Member)

 James Sasitorn, Master of Science Efficient Implementation of Frist-class Polymorphic Methods in Java. (2005) (Thesis Committee Member)

 Michael Jensen, Master of Science in Computer Science Growing DrJava to Cope with Language Extensions Carried out in Java 5.0. (2005) (Thesis Committee Member)

 Jason Eckhardt, Master of Science in Computer Science Global Register Allocation Using Program Structure. (2005) (Thesis Committee Member)

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

 Gabriel Marin, Ph.D Application Insight Through Performance Modeling. (2007) (Thesis Committee Member)

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

 Roumen Kaiabachev, Master of Sceince A Transactional Compiler for E-FRP With Priorities. (2007) (Thesis Director)

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

 Sami Kirolos, Ph.D. n/a. (2008) (Thesis Committee Member)

 Hamid Nejati, Ph.D. n/a. (2008) (Thesis Committee Member)

 Sumit Nain, M.S. n/a. (2008) (Thesis Committee Member)

 Raj Bandyopadhyay, Ph.D. Compiling dynamic languages via typed funtional languages. (2008) (Thesis Director)

 Gabriel Marin, Ph.D. n/a. (2008) (Thesis Committee Member)

 Tamer Ragheb, Ph.D. n/a. (2008) (Thesis Committee Member)

 Cheryl McCosh, Doctor of Philosophy A Type-Based Protype Compiler for Telescoping Languages. (2008) (Thesis Committee Member)

 Joseph Young, Ph.D. n/a. (2008) (Thesis Director)

 Sumit Nain, Master of Science Linear vs. Branching Time: A Semantical Perspective. (2009) (Thesis Committee Member)

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

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

 Jun Inoue, Master of Science Reasoning About Staged programs. (2010) (Thesis Director)

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

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

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

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

Awards, Prizes, & Fellowships
 NSF CAREER Award, NSF (2008)

Positions Held
 Visiting Professor, Oxford, UK. (2007 - 2007)

 Founder, Middle Earth Programming Languages Seminar (MEPLS). (2008 - 2008)

 Referee Panelist, National Science Foundation. (2008 - 2008)

 Program Committee Member, International Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA). (2008 - 2008)

 Program Committee Member, International Conference on Software Language Engineering (SLE). (2008 - 2008)

 Program Committee Member, International Conference on Embedded Software and Systems (ICESS). (2008 - 2008)

 Program Committee Member, ETAPS Workshop on Designing Correct Circuits (DCC). (2008 - 2008)

 Program Committee Member, European Symposium on Programming (ESOP). (2008 - 2008)