RAPL 2000


----------------------------
RECENT ADVANCES IN PROGRAMMING LANGUAGES
Tutorial Workshop
December 11-12, 2000, New Delhi, India


A satellite workshop of the
Twentieth Conference on the
FOUNDATIONS OF SOFTWARE TECHNOLOGY
AND THEORETICAL COMPUTER SCIENCE
December 13-15, 2000, New Delhi, India
----------------------------



Speakers

Gerard Berry (Ecole des Mines and INRIA, Sophia-Antipolis) Synchronous programming of hardware and software controllers: Esterel and Syncharts
Gilad Bracha (Sun) Class Loading Issues in Java
Gopal Gupta (U Texas, Dallas) Constraint Logic Programming and Its Applications
Gary Lindstrom (Utah) Persistence and Java
Benjamin Pierce (U Penn) Regular Expression Types for XML
Uday Reddy (Birmingham) State and abstraction in object-oriented programming: Semantics and Formal Methods





Programme

11 December 2000 

9:00-9:10 Opening
9:10-11:10 Gerard Berry: Synchronous programming of hardware and software controllers: Esterel and Syncharts
11:10-11:30 Tea
11:30-13:00 Uday Reddy:State and abstraction in object-oriented programming: Semantics and Formal Methods
13:00-14:00 Lunch
14:00-15:30 Benjamin Pierce: Regular Expression Types for XML
15:30-16:00 Tea
16:00-17:30 Gopal Gupta: Constraint Logic Programming and Its Applications

12 December 2000 

9:00-11:00 Gilad Bracha: Class Loading Issues in Java
11:00-11:30 Tea
11:30-13:00 Gary Lindstrom: Persistence and Java
13:00-14:00 Lunch






Abstracts

Class Loading Issues in Java
Gilad Bracha

The Java platform is notable for its facilities for loading software modules - classes in this case. These facilities are dynamic, user-extensible and type-safe. The design of the class loading facilities in Java interacts with the design of many other aspects of the Java platform: the byte code verifier, security and reflection to name a few. We discuss the design of the class loading facilities in the Java platform and highlight subtleties that arise.

Duration: 2 hours

Persistence and Java
Gary Lindstrom

Persistence is the capability of state information to exist in time and space beyond that of the program from which it arose. The most common form of persistence is data externalized and manipulated through database management facilities. Current research in persistence is striving to provide coherent and flexible persistence for other program features, including persistent type information (methods) and execution state (threads). Aspects of Java facilitating these more comprehensive forms of persistence are surveyed, as well as commercial developments enhancing database access through Java, and open research challenges.

Duration: 1.5 hours

Constraint Logic Programming and Its Applications
Gopal Gupta

Constraint Logic Programming has recently gained a lot of attention as a paradigm that can be used to solve complex problems rapidly and efficiently. In this tutorial talk we will give a brief introduction to constraint logic programming over reals and finite domains. We will discuss applications of logic and constraint programming to building reliable software systems. In particular, applications such as rapid prototyping of complex systems, rapid development of provably correct interpreters and compilers for domain specific languages, modeling and verification of real-time systems, semantics-based frameworks for interoperability, etc., will be discussed.

Duration: 1.5 hours

Synchronous programming of hardware and software controllers: Esterel and Syncharts
Gerard Berry

The Esterel textual language and the SyncCharts graphical formalism are dedicated to the programming of hardware and software controllers. They are used in academia and industry for applications such as embedded systems, hardware and software controllers and protocols, circuit modeling and synthesis, human-machine interface, etc. The talk will present the basic synchrony hypothesis which founds the languages, the programming style, the mathematical semantics, the algorithms used to compile programs into circuits or software codes, the optimization techniques, and the program verification environment. The Esterel Studio tool that implements Esterel and Syncharts will be demonstrated.

Duration: 2 hours

Regular Expression Types for XML
Benjamin C. Pierce

The recent rush to adopt XML can be attributed, in part, to the hope that the static typing provided by DTDs (or more sophisticated mechanisms such as XML-Schema) will improve the robustness of data exchange and processing. However, although XML documents can be checked for conformance with DTDs, current XML processing languages offer no way of verifying that programs operating on these documents will always produce conforming outputs.

We are designing a domain-specific language called XDuce for XML processing. The main novelties of XDuce are

  1. A type system based on Regular Expression Types. Regular expression types are a natural generalization of DTDs, describing structures in XML documents using regular expression operators (@*@, @?@, @|@, etc.) and supporting a powerful notion of subtyping.
  2. A corresponding notion of Regular Expression Pattern Matching, which supports very concise patterns for extracting information "from the middle" of structured sequences.

[Joint work with Haruo Hosoya and Jerome Vouillon, with lots of contributions from Phil Wadler and Peter Buneman.]

Duration: 1 hour

State and abstraction in object-oriented programming: Semantics and Formal Methods
Uday Reddy

In this talk, we develop a coherent semantic model of objects with state and data abstraction in the style of commonly used object-oriented programming languages. The model is based on an established body of work on "Algol-like Languages" initiated by John Reynolds, and focuses on the local state aspects of objects. We also consider the application of the semantic model for specifications and reasoning both in an algebraic style and the more common Hoare Logic style. Finally, we introduce new techniques under development for reasoning about dynamic data structures using the logic of Bunched Implications.

Duration: 1 to 1.5 hours





About the speakers

Gerard Berry

Gerard Berry is a Director of Research, currently at Ecole des Mines and INRIA, Sophia-Antipolis. He obtained his PhD in Mathematics in 1979. He was worked extensively in subjects such as logic, lambda-calculus, semantics, circuit design, synthesis and optimization, embedded systems and program verification. He is joining the Esterel Technologies company in January 2001.

Gilad Bracha

Gilad Bracha is Computational Theologist at Sun Microsystems, and a researcher in the area of object-oriented programming languages. He is co-author of the second edition of the Java (tm) Language Specification. Prior to joining Sun, he worked on Strongtalk(tm), the Animorphic Smalltalk System. He holds a B.Sc. in Mathematics and Computer Science from Ben Gurion University in Israel, and a Ph.D. in Computer Science from the University of Utah.

Gopal Gupta

Gopal Gupta received his B.Tech in CS from IIT Kanpur in 1985 and MS and PhD in CS from UNC Chapel Hill in 1991. From 1989 to 1991 he worked as a Research Associate at the University of Bristol, UK, in the Parallel Logic Programming Group headed by David H.D. Warren. His research work in the past has been on building parallel implementations of logic and constraint programming systems. Currently, his group is developing a distributed implementation based on the commercial ALS Prolog system. He is also interested in programming language semantics, in particular, using Horn Logic as a formalism for expressing semantics of programming languages. He has put Horn logic based semantics to a number of applications (some of these will be discussed in the tutorial talk). His general areas of research interest are logic and constraint programming, formal software engineering, parallel processing, and programming languages. He has published more than 70 papers in these areas and has served in the program committees of a number of conferences in these areas. He also serves in the editorial board of the Journal of Logic Programming. At present he is in the faculty of the Computer Science Department at the University of Texas at Dallas.

Gary Lindstrom

Gary Lindstrom's research interests include programming language design, specification, and implementation, with special emphasis on relationships to databases and other forms of persistence. He is on the editorial board of International Journal of Parallel Programming, and Editor-in-Chief from its founding until 1993. With Doug DeGroot, he co-edited the book Logic Programming: Functions, Relations and Equations published by Prentice-Hall. Professor Lindstrom has served on the National Science Foundation Computer and Computation Research Advisory Committee. He has served as a Distinguished Visitor of the IEEE Computer Society, and has received the College of Engineering Outstanding Teaching Award.

Benjamin Pierce

Benjamin Pierce joined the Computer and Information Science Department at the University of Pennsylvania in September, 1998. Previously, he was on the faculty at Indiana University, and has held research fellowships at the Computer Laboratory, University of Cambridge, the Laboratory for Foundations of Computer Science, University of Edinburgh, and project Coq, INRIA-Roquencourt. Benjamin received his Ph.D. in Computer Science at Carnegie Mellon University in 1991. His research work centers on programming languages, static type systems, concurrent and distributed programming, mobile agents, process calculi, and file synchronization.

Uday S. Reddy

Uday Reddy is the Professor of Programming Languages at the University of Birmingham in England. Previously he had been on the faculty of University of Illinois at Urbana-Champaign, USA, and made research visits to Imperial College of Science and Technology, University of Glasgow and the Queen Mary and Westfield College. He has received M.Sc.(Hons) from Birla Institute of Technology and Science, Pilani and Ph.D. from University of Utah, Salt Lake City. His research interests include the semantics of programming languages, formal methods, functional programming, logic programming and object-oriented programming.