*Alguns tutoriais serão ministrados em inglês.
TUTORIAL 01: Specifying, programming, and verifying in Maude
2ª FEIRA (29/09/2014) – 11:00 – 12:30 e 14:30 – 16:00 (Auditório 2)
Maude is a high-level language and high-performance system supporting both equational and rewriting computation for a wide range of applications. We provide first an introduction to equational specification and rule-based programming in Maude 2, showing the difference between equations and rules. We use typical data structures (stacks, queues, lists, binary trees), specified as functional modules, and well-known mathematical games and puzzles, specified as system modules, to illustrate the features and expressive power of Maude, emphasizing the full generality with which membership equational logic and rewriting logic are supported.
A rewrite theory, specified in Maude as a system module, provides an executable mathematical model of a concurrent system. We can use the Maude specification to simulate the concurrent system so specified, but we can do more. Under appropriate conditions we can check that our mathematical model satisfies some important properties, or obtain a useful counterexample showing that the property in question is violated. This kind of model-checking analysis can be quite general. Although the search command provided by Maude can be used to model check invariant properties of concurrent systems specified as system modules, Maude also provides a model checker for linear temporal logic. This procedure can be used to prove properties when the set of states reachable from an initial state in a system module is finite; when this is not the case, it may be possible to use an equational abstraction technique for reducing the size of the state space.
Moreover, exploiting the fact that rewriting logic is reflective, a key distinguishing feature of Maude is its systematic and efficient use of reflection, a feature that makes Maude remarkably extensible and powerful, and that allows many advanced metaprogramming and metalanguage applications. In particular, this makes Maude a useful metatool to build many other tools.
Dr. Narciso Martí-Oliet is a full professor in the Computer Science Department of Universidad Complutense de Madrid (UCM) in Madrid, Spain. He obtained his PhD in Mathematics-Computer Science in 1991 from UCM with a thesis supervised by J. Meseguer on the categorical semantics of linear logic and order-sorted algebra. His research took place from 1988 at the research center SRI International, in Menlo Park, CA, USA, where he was also a postdoctoral international fellow until his return to Madrid in 1994. In 1995 Marti-Oliet took a permanent position as an associate professor in the Computer Science Department of UCM. Since then his research has been focused on the subjects of declarative multiparadigm programming, and algebraic and logical methods for software specification, design and verification, and in particular on several aspects around the use of rewriting logic in such research areas. Marti Oliet currently leads the research group on Formal Analysis and Design of Software Systems (FADOSS) at UCM, where he has supervised four PhD theses. He is principal investigator of several projects of the Spanish Ministry for Science and Innovation and of the Madrid Regional Government, in collaboration with other research groups from Universidad Politecnica de Madrid and UCM. He is also a member of the international team led by J. Meseguer that designs and develops the language and system Maude, based on equational and rewriting logic. An important contribution has been the book "All About Maude, A High-Performance Logical Framework" published in 2007 in the Springer series Lecture Notes in Computer Science. Marti-Oliet has been a member of several program committees for international conferences, and has also organized conferences such as WRLA'04 on Rewriting Logic and its Applications in Barcelona, Spain, RULE'05 on Rule Based Programming in Nara, Japan, and WADT 2012 on Algebraic Development Techniques in Salamanca, Spain. Moreover, since 2008 he is the vicedean in charge of graduate studies at the Computer Science Department of UCM.
TUTORIAL 02: Using Tabular Mathematical Expressions to Document Software Designs
3ª FEIRA (30/09/2014) – 11:00 – 12:30 e 14:30 – 16:00 (Auditório 2)
Nearly 40 years of experience have shown that we can write very precise software design documents that can be read and written by well-prepared practitioners. We have used them for avionics, nuclear plants, and telephony systems. The morning session will explain the contents of the documents that are needed and how mathematics can be used to represent them. In the afternoon, we will show how to write tabular (multi-dimensional mathematical expressions to make the documents easier to prepare, check, and use.
Dr David Lorge Parnas has been studying industrial software development since 1969. Many of his papers have been found to have lasting value. For example, a paper written 25 years ago, based on a study of avionics software, was recently awarded a SIGSOFT IMPACT award. Parnas has won more than 20 awards for his contributions. In 2007, Parnas was proud to share the IEEE Computer Societyʼs one-time sixtieth anniversary award with computer pioneer Professor Maurice Wilkes of Cambridge University. Parnas received his B.S., M.S. and Ph.D. in Electrical Engineering from Carnegie Mellon University. and honorary doctorates from the ETH in Zurich (Switzerland), the Catholic University of Louvain (Belgium), the University of Italian Switzerland (Lugano), and the Technische Universität Wien (Austria). He is licensed as a Professional Engineer in Ontario. Parnas is a Fellow of the Royal Society of Canada (RSC), the Association for Computing Machinery (ACM), the Canadian Academy of Engineering (CAE), the Gesellschaft für Informatik (GI) in Germany and the IEEE. He is a Member of the Royal Irish Academy. Parnas is the author of more than 275 papers and reports. Many have been repeatedly republished and are considered classics. A collection of his papers can be found in: Hoffman, D.M., Weiss, D.M. (eds.), “Software Fundamentals: Collected Papers by David L. Parnas”, Addison-Wesley, 2001, 664 pgs., ISBN 0-201-70369-6. Dr. Parnas is Professor Emeritus at McMaster University in Hamilton Canada, and at the University of Limerick Ireland and also an Honorary Professor at Ji Lin University in China. He is President of Middle Road Software in Ottawa, Ontario.
TUTORIAL 03: Projeto rigoroso de componentes de software imperativo
4ª FEIRA (01/10/2014) – 11:00 – 12:30 e 14:30 – 16:00 (Auditório 2)
Este tutorial introduzirá o método B de engenharia de componentes de software. O método B vem sendo usado na indústria para desenvolvimento de componentes de software embarcados em sistemas críticos. Será apresentada a linguagem de especificação e de projeto do método B, assim como a metodologia de verificação integrada ao seu processo de desenvolvimento. Os conceitos apresentados serão ilustrados através de exemplos e de um ambiente integrado de desenvolvimento dedicado. O objetivo deste tutorial é fornecer ao público: meios de identificar situações onde o método B pode ser aplicado, uma certa familiaridade com os conceitos de desenvolvimento rigoroso de software, e com um método formal efetivo.
Dr. David Deharbe is associate professor at Federal University of Rio Grande do Norte (Natal, Brazil) where he has been since 1997. He is a member of the research group ForAll (Formal Methods and Languages Laboratory) and CNPq has granted him a research productivity grant. He is an associate member of VeriDis team, colocated at INRIA (Nancy, France) and Max-Planck Institute (Saarbrücken, Germany). David Deharbe holds a Doctorate degree in Computer Science from Université de Grenoble (France). He did a post-doc at Carnegie Mellon University (Pittsburgh, USA), and two sabbatical at LORIA (Nancy, France). His areas of interest are formal methods (primarly the B-method) and formal verification techniques (first symbolic model checking and then satisfiability modulo theory). In 2014, he served the program committee of ABZ, ICTAC, iFM, SBMF, and co-organized SMT-COMP. He his one of the main developers of the SMT-solver veriT.
TUTORIAL 04: Code Analysis and Optimization with the LLVM Compiler
5ª FEIRA (02/10/2014) – 11:00 – 12:30 e 14:30 – 16:00 (Auditório 2)
Compilers are one of the cornerstones of computer science. They have been fundamental to the evolution of programming languages, networks, operating systems and all the basic building blocks of this digital world that exists today. There are a number of open source compilers in widespread use, such as gcc, Open64 and LLVM. This last one, in particular, has been arising a great deal of attention, from both, the academia and the industry. LLVM is a core infra-structure in companies such as Apple, Cray and NVIDIA. Furthermore, it is possibly the most popular compiler in research projects, given its easy of use, extensive documentation and welcoming community. In this tutorial, we shall introduce the audience to the art and craft of this compiler. We will show how to implement simple analyses that uncover program vulnerabilities and inefficiencies. We will also demonstrate how to transform programs automatically, to remove these problems from their code. This tutorial is directed to students in the undergraduate and graduate level, and to practitioners who want to learn how to rely on the compiler to understand and improve programs.
Fernando Pereira got his PhD from the University of California, Los Angeles, in 2008. Since 2009 he is a professor at the Federal University of Minas Gerais, Brazil, where he does research in code analysis and optimizations. His group has patches in important open source compilers, such as LLVM, PHC, Ocelot and Mozilla's TraceMonkey.
TUTORIAL 05: Loop transformations for multi-target code optimization
6ª FEIRA (03/10/2014) – 11:00 – 12:30 e 14:30 – 16:00 (Auditório 2)
Automatic and semi-automatic program optimization by means of loop transformations is a critical step in the quest of better program performance. Be it for multi-core CPUs, GPUs or FPGAs, complex sequences of loop transformations are often required to expose parallelism (both coarse-grain and fine-grain) and improve data locality (for instance via loop tiling). The ability to encompass a large set of program transformations into a single, well understood optimization problem is one of the strongest asset of the polyhedral compilation model. In the polyhedral model, sequence of loop transformations are represented with a schedule of each dynamic instance of individual statements of a loop nest.
This tutorial covers: traditional textbook loop transformations for program optimization; how such transformations can be composed to expose various forms of parallelism and reduce memory traffic; how we can automate the transformation process in full by operating on a rich mathematical representation of the program called the polyhedral model; and if time allows how domain-specific and pattern-specific languages could be designed to improve productivity by ensuring successful compiler optimizations can be applied.
Dr. Louis-Noel Pouchet is currently a Visiting Assistant Professor at the University of California, Los Angeles. He is an active member of the NSF Center for Domain-Specific Computing (CDSC), working on both software and hardware customization. He is working on domain-specific languages and compilers for scientific computing, and has designed numerous optimizing compilation approaches to effectively map applications to CPUs, FPGAs and SoCs. He is also the author of PolyOpt, PoCC and PolyBench, three software packages dedicated to polyhedral compilation.