Workshop on Quality Software:
A Festschrift for Bjarne Stroustrup

Texas A&M University, April 27-28, 2012

Bjarne Festschrift 2012: Talk Abstracts & Speaker Biographies



Panel and Talk Abstracts & Speaker Biographies



Workshop Presentations


Panel: Teaching Programming
Moderator:
Jan Christiaan van Winkel (Google)
Panelists:
Alex Stepanov (A9.com), Bjarne Stroustrup (Texas A&M)

Abstract
Many people programming today never had a real programming education. The programming forums are full of questions (and bad answers) of long since solved problems and trivia. Some materials even point people in the wrong direction. Point in case: a C++ book skipping treatment of the copy constructor because that subject was deemed too difficult.

This is an undesirable situation. But can the colleges and universities deliver enough graduates with sufficient CS and Math background? Are the employers willing to pay the salaries that these schooled programmers may expect? How can we educate the current people in programming jobs without a proper background? Are employers willing to pay for the education of these people? What should courseware for current non-educated programmers look like?

Biographies

Jan Christiaan (JC) van Winkel. After a "sinful" start in High school programming in Basic and a Texas Instruments SR56 programmable calculator, JC quickly came back to the right path with some Algol and a solid CS education at Hogeschool Eindhoven and at the free University of Amsterdam. He taught C++ for 20 years at AT Computing, a small courseware company in the Netherlands, and he has been the Dutch representative in the C++ standardization committee since 1997. He currently works for Google in Zurich.

Alexander Stepanov (Александр Александрович Степанов) studied mathematics at Moscow State University from 1967 to 1972. He has been programming since 1972, first in the Soviet Union and then, after emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on the foundations of programming has been supported by General Electric, Polytechnic Institute of New York, AT&T, Hewlett-Packard, Silicon Graphics, and Adobe Systems. He is presently employed by A9.com as a software engineer. In 1995, he received the Dr. Dobb's Excellence in Programming Award for the design of the C++ Standard Template Library.

Bjarne Stroustrup. Not necessary!


Panel: C++ Standards
Moderator:
Alisdair Meredith (Bloomberg)
Panelists:
Matt Austern (Google), Jonathan Caves (Microsoft), Lawrence Crowl, Jan Christiaan van Winkel (Google)

Abstract
The first C++ standard was ratified in 1993, preceded by years of work by the standards committee. Since then, new revisions of the standard have been published in 2003 and in 2011; the latter a major milestone that introduced a large number of new language features. The standardization process is quite heavy-weight and completely based on voluntary effort of different organizations (compiler and library vendors, software companies, programming language researchers, individual hackers, etc.) and their representatives.

This panel will discuss the role of the standards committee in C++'s well-being and its future; the impact of the largely "consensus-seeking" mode of operation of the committee on a language's evolution; and many other topics about the workings and impact of this varied community of software professionals.

Biographies

Alisdair Meredith. Alisdair Meredith has been an active member of the C++ standards comittee for 9 years, and is the current chair of the Library Working Group. By a fortunate coincidence, his first meeting was also the first meeting to consider proposals for the planned C++0x standard! In that time, he has worked in fields as diverse as Formula 1 motor racing, compiler tools, and now financial news, all made possible by C++!

Matt Austern. Matt Austern works in Google's Systems Infrastructure group, where he is currently tech lead of the Pregel project and previously worked on MapReduce. Before coming to Google he worked at Apple, at SGI, and in Bjarne Stroustrup's Large-Scale Programming Research Department at AT&T. He also participates in C++ standardization, and is the author of a book about the STL.

Jonathan Caves. Jonathan first encountered C++ in 1989 at Fermi National Laboratory and immediately knew this was the language for him. Very soon afterwards he found a job working on the C-front based C++ compiler at Glockenspiel in Dublin, Ireland. In 1993 he joined Microsoft where, except for one brief foray into the realm of C# and domain specific languages, he has been working on the Visual C++ compiler.

Lawrence Crowl. Dr. Lawrence Crowl has expertise in programming languages, compilers, and parallel programming. He has been mixing threads with C++ for twenty-five years and is a major contributor to C++11.

Jan Christiaan (JC) van Winkel. After a "sinful" start in High school programming in Basic and a Texas Instruments SR56 programmable calculator, JC quickly came back to the right path with some Algol and a solid CS education at Hogeschool Eindhoven and at the free University of Amsterdam. He taught C++ for 20 years at AT Computing, a small courseware company in the Netherlands, and he has been the Dutch representative in the C++ standardization committee since 1997. He currently works for Google in Zurich.


Austern Photo Large-scale distributed computation at Google
Matt Austern
Google

Abstract
Distributed processing of large datasets on large clusters of computers poses challenges of scaling, fault tolerance, communication, and latency tolerance. Google has developed several frameworks, including MapReduce and Pregel, that enable efficient distributed computation while presenting an abstract and relatively simple model to the programmer. This talk presents several of those frameworks and describes how they achieve reliable computation using unreliable components.

Biography
Matt Austern works in Google's Systems Infrastructure group, where he is currently tech lead of the Pregel project and previously worked on MapReduce. Before coming to Google he worked at Apple, at SGI, and in Bjarne Stroustrup's Large-Scale Programming Research Department at AT&T. He also participates in C++ standardization, and is the author of a book about the STL.


Boehm Photo C++11 Threads Surprises

Hans Boehm
HP Labs

Abstract
C++11 adds support for threads to the languages and carefully defines the meaning of shared variables, providing a "memory model" for threads. I'll review the basics of the approach we took, and then focus on those characteristics that often surprise users. I'll try to convince you that those surprises either represent clear improvements to more traditional approaches, or at least one of several reasonable choices. For example, I'll explain why synchronization- and IO-free infinite loops are essentially treated as programmer errors, why trylock() can fail spuriously, and why the C++11 standard treats "detached" threads with caution, and you should, too.

Biography
Hans Boehm is a research manager at HP Labs. He is probably best known as the primary author of a commonly used garbage collection library. Experiences with threads in that project eventually led him to initiate the effort to properly define threads and shared variables in C++11. He is an ACM Distinguished Scientist and a former Chair of ACM SIGPLAN. He holds a B.S. degree from the University of Washington, and M.S. and Ph.D. degrees from Cornell University.


Crowl Photo Lessons from Bugs
Lawrence Crowl

Abstract
We encounter bugs often in our daily work, but far less often do we ask what we really learned from those bugs. I describe some of the bugs I have encountered, and some I have avoided, and some general lessons on software quality that came from the experience.

Biography
Dr. Lawrence Crowl has expertise in programming languages, compilers, and parallel programming. He has been mixing threads with C++ for twenty-five years and is a major contributor to C++11.


Dechev Photo Design and Evaluation of Scalable Software
Damian Dechev
University of Central Florida

Abstract
Software applications need to change and adapt as modern architectures evolve. Nowadays advancement in chip design translates to increased parallelism. Exploiting such parallelism is a major challenge in modern software engineering. Multicore processors are about to introduce a significant change in the way we design and use fundamental data structures. In this talk we outline the design of a library of highly concurrent and scalable nonblocking data containers with associated programming interface and optimization support to significantly enhance the productivity and performance of multi-threaded C/C++ applications on multicore architectures. In addition, we introduce our performance modeling and simulation approach, where the efficiency and scalability of optimized code is evaluated on a reconfigurable simulator to help boost the overall application's performance and identify communication and synchronization bottlenecks.

Biography
Damian Dechev is an Assistant Professor at the EECS Department at the University of Central Florida in Orlando, FL and a joint Senior Member of Technical Staff at the Scalable Computing R&D Department at Sandia National Labs in Livermore, CA. Damian's main research interests are in the areas of non-blocking synchronization, programming tools and techniques, and program analysis. Damian earned his Ph.D. degree from Texas A&M University in 2009 under the guidance of Dr. Bjarne Stroustrup.


Haveraaen Photo Domain Engineering with Concepts

Magne Haveraaen
University of Bergen

[Slides (pdf)]

Abstract
Domain engineering is discovering the terminology that describes a domain and organising it into highly reusable artefacts - enabling the development of software product lines. Capturing the domain entails declaring the involved types and functions and their relationships - C++ "concepts".

Here we show how we developed coordinate-free numerics doing "domain engineering with concepts" on the domain of partial differential equations (PDEs). Coordinate-free numerics has proven to be a stable library design for the PDE domain within scientific computing, naturally aligning the variation points of high performance PDE solvers with the library structure.

Biography
Magne Haveraaen is a full professor at the Department of Informatics, University of Bergen (UoB), where he is heading the Bergen Language Design Laboratory (BLDL). Haveraaen's research interests are in domain engineering, language design and formal methods, both the theoretical and the pragmatical aspects. He was instrumental in the development of coordinate-free numerics, and responsible for its C++ library implementation.


Lextrait Photo The Programming Languages Beacon: Where is C++ among familiar applications?
Vincent Lextrait
Amadeus

Abstract
Vincent will present The Programming Languages Beacon, a page he maintains on the Internet which describes the impact of C++ on familiar applications. He will explain where it comes from, what is the process to maintain it, he will show analytics on the consultations of the page, and will try to give a few pieces of explanation on why, beyond its intrinsic qualities, C++ has succeeded to take this overwhelming share of the software that surrounds us.

Biography
Vincent Lextrait is Director of Software Development at Amadeus, the leading Travel Technology supplier in the world. After being responsible for the move to open systems, designing and delivering the transactional infrastructure (up to 170,000 transactions a second, one billion and a half transactions a day) and delivering the first Airline IT solutions to British Airways and Qantas, he is currently responsible of Hotel, Rail, Car, Cruise and Insurance reservations, with solutions engineered in 6 main locations in the world. Vincent has spent his entire career in the software product industry, and in parallel to that has been for years the head of C++ standardization in France. He organized in 1997 the C++ ISO meeting in Sophia Antipolis, France, which led to the first C++ standard. He has been member of ACM and IEEE for more than a decade, and holds an engineering degree from Ecole des Mines de Paris, and a PhD in Computer Science from University of Nice.


Lumsdaine Photo enable_if: Extending a language in four lines or less
Andrew Lumsdaine
Indiana University

Abstract
In many ways, C++ can be considered an open programming language platform rather than just a programming language. A number of its features enable programmers to extend the basic language in remarkable ways. Since these extensions can be made within the language, the resulting features can be used and evaluated in the context of the complete C++ ecosystem. This openness, flexibility, and extensibility all contribute to the richness of C++ and to its wide applicability across numerous domains. In this talk I will discuss enable_if: four lines of C++ that provide a concept-controlled polymorphism mechanism for C++.

Biography
Andrew Lumsdaine is a Professor of Computer Science in the School of Informatics & Computing at Indiana University and Director of the Center for Research in Extreme Scale Technologies (CREST) at the Pervasive Technology Institute. Lumsdaine received his Ph.D. from MIT in 1992. His research interests include computational science and engineering, parallel and distributed computing, software engineering, generic programming, mathematical software, numerical analysis, and computational photography. Lumsdaine is a member of ACM, IEEE, and SIAM, the MPI Forum, and the ISO C++ standards committee.


Peter Photo Dynamic Bug Detection for C, C++, and UPC
Peter Pirkelbauer
LLNL

Abstract
At compile-time, main-stream programming languages can detect software flaws in source code to a varying degree. While finding all software bugs statically is a noble goal, in practice absolute safety is hard to attain for compilers of general purpose languages. I will present a dynamic error detection tool CIRM (code instrumentation and runtime monitor) for C, C++, and UPC source codes. Built on top of the ROSE source-to-source transformation infrastructure, CIRM instruments source files with code that monitors operations and tracks changes of the system state. CIRM can detect uninitialized variables, arithmetic overflow/underflow, invocation of C standard library functions with precondition violating arguments, memory errors (involving stack, heap, and UPC's global address space), and similar software defects that would be otherwise hard to spot. During program execution, the runtime monitor keeps track of changes to the overall system state and flags operations that could compromise a system's safety. I will present ROSE-CIRM's implementation for both sequential and parallel codes and results obtained by checking against an error detection benchmark test suite. We also measured the runtime performance overhead by running error-free test codes. To overcome the slowdown incurred by monitoring the program execution, I will discuss how relatively simple static analysis techniques can eliminate unnecessary safety checks.

Biography
Peter Pirkelbauer graduated with a PhD from Texas A&M University in 2010, where he was a member of Dr. Stroustrup's research group. Currently, he is a post-doctoral researcher in Dr. Quinlan's compiler group at the Lawrence Livermore National Laboratory. At LLNL, he is working on dynamic error detection and on source code rejuvenation of large scale parallel systems using MPI. His research interests include programming languages, source code analysis, transformation systems, and non-blocking programming techniques.


Sethi Photo End-to-End Software Quality
Ravi Sethi
Avaya Labs

Abstract
"Improve the State of Software and Know It" is the guiding principle for software technology research in Avaya. This talk is an overview of lessons learned over the past decade. We begin with a Customer Quality Metric, a measure of quality as perceived by the customer, and work backward in the software life-cycle to improvements in development processes. Annual assessments of the state of software provide data to drive improvements. [Based on work with Audris Mockus, Randy Hackbarth, and John Palframan.]

Biography
Ravi Sethi is a co-author of the textbook, Compilers: Principles, Techniques & Tools, popularly known as the "dragon book." It is "widely regarded as the classic definitive compiler technology text" [Wikipedia]. He has a Ph.D. from Princeton University and a B. Tech. from the Indian Institute of Technology (IIT), Kanpur. Ravi Sethi has worked in academia - Penn State and Univ. of Arizona - and industry - Bell Labs and Avaya Labs. He came to Avaya when it became an independent company in 2000 to start Avaya Labs Research.


Stepanov Photo Educating Programmers: A Customer Perspective
Alex Stepanov
A9.com

Abstract
Many programmers lack the skills required for producing quality software. Programming must be taught as a serious discipline, with an extensive core curriculum covering such topics as system decomposition and component design. Developing a sense of programming aesthetics, including the study of real world examples of beautiful programs, is at the heart of this discipline. Grounding in elementary mathematics (algebra and Euclidean geometry) provides the necessary intellectual and aesthetic foundation for the curriculum.

Biography
Alexander Stepanov (Александр Александрович Степанов) studied mathematics at Moscow State University from 1967 to 1972. He has been programming since 1972, first in the Soviet Union and then, after emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on the foundations of programming has been supported by General Electric, Polytechnic Institute of New York, AT&T, Hewlett-Packard, Silicon Graphics, and Adobe Systems. He is presently employed by A9.com as a software engineer. In 1995, he received the Dr. Dobb's Excellence in Programming Award for the design of the C++ Standard Template Library.


Places, People, and Code
Bjarne Stroustrup
Texas A&M University

Abstract
A few reminiscence about my work with an emphasis on people.

Biography
Not Needed!


Bjarne Festschrift Home   Contact & Info