Workshop on Quality Software: Texas A&M University, April 27-28, 2012 |
Workshop Presentations
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!
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.
Large-scale distributed computation at Google
Matt Austern |
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.
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.
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.
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.
Domain Engineering with Concepts
Magne Haveraaen University of Bergen |
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.
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.
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.
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.
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.
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.
Abstract
A few reminiscence about my work with an emphasis on people.
Biography
Not Needed!
Bjarne Festschrift Home | Contact & Info |