Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Mark W. Bailey

dblp:b/MarkWBailey · DBLP profile ↗
← Back
10ranked-venue papers
6as first author
0since 2021 · last 2009
0000-0001-9093-6870ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 3 first-authorHuman-computer interaction and ubiquitous computing · 3 · 3 first-authorSystems, architecture and hardware · 2

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Software testing · 50% Compilers and program optimization · 41% Programming languages and type systems · 9%

Topics — the 5 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software testing
compiler testing
0.122003
Automatic Detection and Diagnosis of Faults in Generated Code for Procedure Calls · IEEE Trans. Software Eng. 2003
Target-Sensitive Construction of Diagnostic Programs for Procedure Calling Sequence Generators · PLDI 1996
Compilers and program optimization
code generation
0.022003
Automatic Detection and Diagnosis of Faults in Generated Code for Procedure Calls · IEEE Trans. Software Eng. 2003
Target-Sensitive Construction of Diagnostic Programs for Procedure Calling Sequence Generators · PLDI 1996
Software testing › test generation
test suite generation
0.011996
Target-Sensitive Construction of Diagnostic Programs for Procedure Calling Sequence Generators · PLDI 1996
Compilers and program optimization › compiler back end
calling conventions
0.011995
A Formal Model of Procedure Calling Conventions · POPL 1995
Programming languages and type systems
language semantics
0.011995
A Formal Model of Procedure Calling Conventions · POPL 1995

Methods — techniques the papers use, named apart from their topics

target-sensitive test suite generation · 0.0formal specification-based test generation · 0.0formal specification · 0.0automated test generation · 0.0
YearPublicationVenuePosition
2009 Report of the 2008 SIGPLAN programming languages curriculum workshop: preliminary report
abstract
This special session will present a summary of the recommendations of the First SIGPLAN Workshop on Undergraduate Programming Language Curricula, held at Harvard University in May, 2008. The purpose of the workshop was to generate new recommendations for programming languages topics to be learned by all undergraduate CS majors. In this special session we will present a summary of the curriculum recommendations, why they were made, and ways of incorporating them into undergraduate CS curricula.
Mark W. Bailey, Kim B. Bruce, Kathleen Fisher, Robert Harper 0001, Stuart Reges
SIGCSE1
2008 Defense against the dark arts
abstract
Computer science faculty must attract and retain students by offering innovative courses that spark student interest, yet still teach core, computer science concepts. These efforts have become particularly important as computer science enrollments have declined, thus increasing concerns for attracting and retaining students. We describe an innovative course that leverages students' interest in computer security issues to attract and retain technically-oriented students. Our initial vision was to offer a course covering computer viruses - a subject that even a novice computer user has some familiarity. To avoid the controversy associated with teaching students how to write malicious software, we focused the course on techniques for defending against viruses, so we named the course Defense Against the Dark Arts. In teaching the course, we have found the subject matter provides an engaging way to introduce and reinforce many important computer science concepts that other courses often cover, most particularly, the traditional compiler course. We have taught the course three times at two separate institutions, with a third school soon to follow. The course has been well received by students - completely filling each semester with enrollments that are four to five times greater than the compiler course. Furthermore, student surveys indicate that the course raises students' awareness of computer security while introducing students to important program translation and analysis concepts.
Mark W. Bailey, Clark L. Coleman, Jack W. Davidson
SIGCSE1
2006 VISTA: VPO interactive system for tuning applications
abstract
Software designers face many challenges when developing applications for embedded systems. One major challenge is meeting the conflicting constraints of speed, code size, and power consumption. Embedded application developers often resort to hand-coded assembly language to meet these constraints since traditional optimizing compiler technology is usually of little help in addressing this challenge. The results are software systems that are not portable, less robust, and more costly to develop and maintain. Another limitation is that compilers traditionally apply the optimizations to a program in a fixed order. However, it has long been known that a single ordering of optimization phases will not produce the best code for every application. In fact, the smallest unit of compilation in most compilers is typically a function and the programmer has no control over the code improvement process other than setting flags to enable or disable certain optimization phases. This paper describes a new code improvement paradigm implemented in a system called VISTA that can help achieve the cost/performance trade-offs that embedded applications demand. The VISTA system opens the code improvement process and gives the application programmer, when necessary, the ability to finely control it. VISTA also provides support for finding effective sequences of optimization phases. This support includes the ability to interactively get static and dynamic performance information, which can be used by the developer to steer the code improvement process. This performance information is also internally used by VISTA for automatically selecting the best optimization sequence from several attempted. One such feature is the use of a genetic algorithm to search for the most efficient sequence based on specified fitness criteria. We include a number of experimental results that evaluate the effectiveness of using a genetic algorithm in VISTA to find effective optimization phase sequences.
Prasad A. Kulkarni, Wankang Zhao, Stephen Roderick Hines, David B. Whalley, Xin Yuan 0001, Robert A. van Engelen, Kyle A. Gallivan, Jason Hiser, Jack W. Davidson, Baosheng Cai, Mark W. Bailey, Hwashin Moon, Kyunghwan Cho, Yunheung Paek
ACM Trans. Embed. Comput. Syst.11
2005 IRONCODE: think-twice, code-once programming
abstract
To become proficient programmers, novices must develop the skills of writing, reading, debugging, and testing code. We believe that learning to write short pieces of code correctly the first time helps strengthen all of these skills. In this paper, we describe a type of exercise, called IRONCODE, that helps develop the code-once skill. We describe the exercise, the programming environment, its implementation, and our experiences using IRONCODE in a second semester programming class.
Mark W. Bailey
SIGCSE1
2005 Branch elimination by condition merging
abstract
Conditional branches are expensive. Branches require a significant percentage of execution cycles since they occur frequently and cause pipeline flushes when mispredicted. In addition, branches result in forks in the control flow, which can prevent other code-improving transformations from being applied. In this paper we describe profile-based techniques for replacing the execution of a set of two or more branches with a single branch on a conventional scalar processor. These sets of branches can include tests of multiple variables. For instance, the test if (p1 != 0 && p2 != 0), which is testing for NULL pointers, can be replaced with if (p1 & p2 != 0). Program profiling is performed to target condition merging along frequently executed paths. The results show that eliminating branches by merging conditions can significantly reduce the number of conditional branches executed in non-numerical applications. Copyright © 2004 John Wiley & Sons, Ltd.
William C. Kreahling, David B. Whalley, Mark W. Bailey, Xin Yuan 0001, Gang-Ryung Uh, Robert A. van Engelen
Softw. Pract. Exp.3
2003 Branch Elimination via Multi-variable Condition Merging
William C. Kreahling, David B. Whalley, Mark W. Bailey, Xin Yuan 0001, Gang-Ryung Uh, Robert A. van Engelen
Euro-Par3
2003 Finding effective optimization phase sequences
abstract
It has long been known that a single ordering of optimization phases will not produce the best code for every application. This phase ordering problem can be more severe when generating code for embedded systems due to the need to meet conflicting constraints on time, code size, and power consumption. Given that many embedded application developers are willing to spend time tuning an application, we believe a viable approach is to allow the developer to steer the process of optimizing a function. In this paper, we describe support in VISTA, an interactive compilation system, for finding effective sequences of optimization phases. VISTA provides the user with dynamic and static performance information that can be used during an interactive compilation session to gauge the progress of improving the code. In addition, VISTA provides support for automatically using performance information to select the best optimization sequence among several attempted. One such feature is the use of a genetic algorithm to search for the most efficient sequence based on specified fitness criteria. We have included a number of experimental results that evaluate the effectiveness of using a genetic algorithm in VISTA to find effective optimization phase sequences.
Prasad A. Kulkarni, Wankang Zhao, Hwashin Moon, Kyunghwan Cho, David B. Whalley, Jack W. Davidson, Mark W. Bailey, Yunheung Paek, Kyle A. Gallivan
LCTES7
2003 Automatic Detection and Diagnosis of Faults in Generated Code for Procedure Calls
abstract
In this paper, we present a compiler testing technique that closes the gap between existing compiler implementations and correct compilers. Using formal specifications of procedure-calling conventions, we have built a target-sensitive test suite generator that builds test cases for a specific aspect of compiler code generators: the procedure-calling sequence generator. By exercising compilers with these specification-derived target-specific test suites, our automated testing tool has exposed bugs in every compiler tested on the MIPS and one compiler on the SPARC. These compilers include some that have been in heavy use for many years. Once a fault has been detected, the system can often suggest the nature of the problem. The testing system is an invaluable tool for detecting, isolating, and correcting faults in today's compilers.
Mark W. Bailey, Jack W. Davidson
IEEE Trans. Software Eng.1
1996 Target-Sensitive Construction of Diagnostic Programs for Procedure Calling Sequence Generators
abstract
Building compilers that generate correct code is difficult. In this paper we present a compiler testing technique that closes the gap between actual compiler implementations and correct compilers. Using formal specifications of procedure calling conventions, we have built a target-sensitive test suite generator that builds test cases for a specific aspect of compiler code generators the procedure calling sequence generator. By exercising compilers with these target-specific test suites, our automated testing tool has exposed bugs in every compiler tested. These compilers include ones that have been in heavy use for many years. The detected bugs cause more than 14,000 test cases to fail.
Mark W. Bailey, Jack W. Davidson
PLDI1
1995 A Formal Model of Procedure Calling Conventions
abstract
Procedure calling conventions are used to provide uniform procedure-call interfaces. Applications, such as compilers and debuggers, which generate, or process procedures at the machine-language abstraction level require knowledge of the calling convention. In this paper, we develop a formal model for procedure calling conventions called P-FSA's. Using this model, we are able to ensure several completeness and consistency properties of calling conventions. Currently, applications that manipulate procedures implement conventions in an ad-hoc manner. The resulting code is complicated with details, difficult to maintain, and often riddled with errors. To alleviate the situation, we introduce a calling convention specification language, called CCL. The combination of CCL and P-FSA's facilitates the accurate specification of conventions that can be shown to be both consistent and complete.
Mark W. Bailey, Jack W. Davidson
POPL1