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. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Brian W. Kernighan

dblp:k/BWKernighan · DBLP profile ↗
← Back
17ranked-venue papers
10as first author
2since 2021 · last 2024
0000-0003-0741-9085ORCID · verified

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

Software engineering, systems software and programming languages · 7 · 6 first-authorDatabases, data management, data science and information retrieval · 4 · 2 since 2021Systems, architecture and hardware · 2 · 1 first-authorComputer networks · 1 · 1 first-authorHuman-computer interaction and ubiquitous computing · 1 · 1 first-authorTheory of computation · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author

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.

Computer architecture, parallel and distributed computing, and storage systems
2 papers
Electronic design automation · 88% Parallel and multicore computing · 9% Performance modeling and evaluation · 3%
Software engineering, system software, and programming languages
4 papers
Operating systems · 45% Software maintenance and evolution · 44% Compilers and program optimization · 9%
Theoretical computer science
1 paper
Graph algorithms and graph theory · 50% Algorithms and data structures · 50%

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

TopicWeightPapersLastEvidence papers
Electronic design automation
physical design
0.011985
A Procedure for Placement of Standard-Cell VLSI Circuits · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 1985
Electronic design automation › physical design
placement
0.011985
A Procedure for Placement of Standard-Cell VLSI Circuits · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 1985
Electronic design automation › physical design › placement › cell placement
standard cell placement
0.011985
A Procedure for Placement of Standard-Cell VLSI Circuits · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 1985
Software maintenance and evolution › software reuse
software reusability
0.011984
The Unix System and Software Reusability · IEEE Trans. Software Eng. 1984
Operating systems › operating system family
UNIX
0.011984
The Unix System and Software Reusability · IEEE Trans. Software Eng. 1984
Parallel and multicore computing
graph partitioning
0.011985
A Procedure for Placement of Standard-Cell VLSI Circuits · IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 1985
Software maintenance and evolution
software reuse
0.011984
The Unix System and Software Reusability · IEEE Trans. Software Eng. 1984
Operating systems
systems programming
0.011973
B73-8 Systems Programming · IEEE Trans. Computers 1973
Graph algorithms and graph theory
graph partitioning
0.011971
Optimal Sequential Partitions of Graphs · J. ACM 1971
Compilers and program optimization
code layout optimization
0.011969
Optimal segmentation points for programs · SOSP 1969
Compilers and program optimization › compiler toolchain
assembler
0.011973
B73-8 Systems Programming · IEEE Trans. Computers 1973
Operating systems › resource management
memory management
0.011971
Optimal Sequential Partitions of Graphs · J. ACM 1971
Operating systems › resource management › memory management › virtual memory
paging
0.011971
Optimal Sequential Partitions of Graphs · J. ACM 1971

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

graph partitioning · 0.0min-cut partitioning · 0.0dynamic programming · 0.0edge-count proportional algorithm · 0.0
YearPublicationVenuePosition
2024 Post-OCR Correction with OpenAI's GPT Models on Challenging English Prosody Texts
abstract
The digitization of historical documents faces challenges with the accuracy of Optical Character Recognition (OCR). Noting the success of large language models (LLMs) on many text-based tasks, this paper explores the potential of OpenAI's GPT models (3.5-turbo, 4, 4-turbo) on the post-OCR correction task using works from the Princeton Prosody Archive (PPA), a full-text searchable database containing English texts published between 1559 and 1928 on versification and pronunciation. We conduct a comparative analysis across different model configurations and prompt strategies. Our results indicate that tailoring prompts with work metadata is less effective than anticipated, though adjusting the temperature parameter can be beneficial. The models tend to overcorrect works with already good OCR quality but perform well overall, with the best model setup improving the Character Error Rate (CER) by a mean of 18.92%. Additionally, after introducing a preliminary quality estimation step to process texts differently based on their original OCR quality, the best mean improvement increases to 38.83%.
James Zhang, Wouter Haverals, Mary Naydan, Brian W. Kernighan
DocEng4
2022 How did dennis ritchie produce his PhD thesis?: a typographical mystery
abstract
Dennis Ritchie, the creator of the C programming language and, with Ken Thompson, the co-creator of the Unix operating system, completed his Harvard PhD thesis on recursive function theory in early 1968. But for unknown reasons, he never officially received his degree, and the thesis itself disappeared for nearly 50 years. This strange set of circumstances raises at least three broad questions:
David F. Brailsford, Brian W. Kernighan, William A. Ritchie
DocEng2
2020 The Old Bailey and OCR: Benchmarking AWS, Azure, and GCP with 180, 000 Page Images
abstract
The Proceedings of the Old Bailey is a corpus of over 180,000 page images of court records printed from April 1674 to April 1913 and presents a comprehensive challenge for Optical Character Recognition (OCR) services. The Old Bailey is an ideal benchmark for historical document OCR, representing more than two centuries of variations in documents, including spellings, formats, and printing and preservation qualities. In addition to its historical and sociological significance, the Old Bailey is filled with imperfections that reflect the reality of coping with large-scale historical data. Most importantly, the Old Bailey contains human transcriptions for each page, which can be used to help measure OCR accuracy. Since humans do make mistakes in transcriptions, the relative performance of OCR services will be more informative than their absolute performance. This paper compares three leading commercial OCR cloud services: Amazon Web Services's Textract (AWS); Microsoft Azure's Cognitive Services (Azure); and Google Cloud Platform's Vision (GCP). Benchmarking involved downloading over 180,000 images, executing the OCR, and measuring the error rate of the OCR text against the human transcriptions. Our results found that AWS had the lowest median error rate, Azure had the lowest median round trip time, and GCP had the best combination of a low error rate and a low duration.
William Ughetta, Brian W. Kernighan
DocEng2
2013 Revisiting a summer vacation: digital restoration and typesetter forensics
abstract
In 1979 the Computing Science Research Center ('Center 127') at Bell Laboratories bought a Linotron 202 typesetter from the Mergenthaler company. This was a 'third generation' digital machine that used a CRT to image characters onto photographic paper. The intent was to use existing Linotype fonts and also to develop new ones to exploit the 202's line-drawing capabilities.
Steven R. Bagley, David F. Brailsford, Brian W. Kernighan
ACM Symposium on Document Engineering3
1998 Timing Trials, or the Trials of Timing: Experiments with Scripting and User-Interface Languages
abstract
This paper describes some basic experiments to see how fast various popular scripting and user-interface languages run on a spectrum of representative tasks. We found enormous variation in performance, depending on many factors, some uncontrollable and even unknowable. There seems to be little hope of predicting performance in other than a most general way; if there is a single clear conclusion, it is that no benchmark result should ever be taken at face value. A few general principles hold: Compiled code usually runs faster than interpreted code: the more a program has been ‘compiled’ before it is executed, the faster it will run. Memory-related issues and the effects of memory hierarchies are pervasive: how memory is managed, from hardware caches to garbage collection, can change runtimes dramatically. Yet users have no direct control over most aspects of memory management. The timing services provided by programs and operating systems are woefully inadequate. It is difficult to measure runtimes reliably and repeatably even for small, purely computational kernels, and it becomes significantly harder when a program does much I/O or graphics. Although each language shines in some situations, there are visible and sometimes surprising deficiencies even in what should be mainstream applications. We encountered more than a few bugs, size limitations, maladroit features, and total mysteries. © 1998 John Wiley & Sons, Ltd.
Brian W. Kernighan, Christopher J. Van Wyk
Softw. Pract. Exp.1
1993 Template-driven interfaces for numerical subroutines
abstract
This paper describes a set of interfaces for numerical subroutines. Typing a short (often one-line) description allows one to solve problems in application domains including least-squares data fitting, differential equations, minimization, root finding, and integration. Our approach of “template-driven programming” makes it easy to build such an interface: a simple one takes a few hours to construct, while a few days suffice to build the most complex program we describe.
Jon Louis Bentley, Mary F. Fernández, Brian W. Kernighan, Norman L. Schryer
ACM Trans. Math. Softw.3
1985 A Procedure for Placement of Standard-Cell VLSI Circuits
abstract
This paper describes a method of automatic placement for standard cells (polycells) that yields areas within 10-20 percent of careful hand placements. The method is based on graph partitioning to identify groups of modules that ought to be close to each other, and a technique for properly accounting for external connections at each level of partitioning. The placement procedure is in production use as part of an automated design system; it has been used in the design of more than 40 chips, in CMOS, NMOS, and bipolar technologies.
Alfred E. Dunlop, Brian W. Kernighan
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.2
1984 The Unix System and Software Reusability
abstract
The Unix system contains a variety of facilities that enhance the reuse of software. These vary from the utterly conventional, such as function libraries, to basic architectural mechanisms, such as the Unix pipe. The Unix pipe, which makes whole programs building blocks of larger computational structures, has been the primary reason for the development of a literature of useful, but specialized programs-programs that would be too costly to write in a conventional programming language such as C. It has led to high levels of program reuse both by the nature of its operation and through its effect on programming conventions (e.g., programs structured as simple filters). Another facility enhancing reuse on Unix is the on-line C source code for Unix system programs. This has led to a shared style of programming in which existing programs are used as models for new programs, allowing the reuse of ideas, algorithms and source code. Finally, the Unix system contains many other reuse enhancing facilities, such as generic facilities for screen management (curses and termcap) and program generators (lex and yacc).
Brian W. Kernighan
IEEE Trans. Software Eng.1
1982 PIC-A Language for Typesetting Graphics
abstract
Abstract PIC is a language for specifying pictures so that they can be typeset as an integral part of a document preparation system. The basic objects in PIC are boxes, lines, arrows, circles, ellipses, arcs and splines, which may be placed at positions specified absolutely or in terms of previous objects, and labeled with arbitrary text. The example below illustrates the general capabilities of the language. magnified image Most of the effort in designing PIC has gone into making it possible to specify the sizes and positions of objects with minimal use of absolute coordinates. This paper describes PIC, with primary emphasis on those aspects of the language that make it easy to use. The paper was typeset using PIC.
Brian W. Kernighan
Softw. Pract. Exp.1
1979 Awk-A Pattern Scanning and Processing Language
abstract
Abstract This paper describes the design and implementation of awk, a programming language which searches a set of files for patterns, and performs specified actions upon records or fields of records which match the patterns. Awk makes common data selection and transformation operations easy to express; for example, is a complete awk program that prints all input lines whose length exceeds 72 characters. The program prints each input line with the first field replaced by its logarithm. The program prints all lines in which the first field is different from the first field of the previous line. Patterns may include boolean combinations of regular expressions and of relational operators on strings, numbers, fields, variables, and array elements. Actions may include: the same matching constructions as in patterns; arithmetic and string expressions and assignments; if‐else, while, and for statements; formatted output; and multiple output streams.
Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger
Softw. Pract. Exp.2
1979 The UNIX/TM Programming Environment
abstract
Abstract The UNIX UNIX is a trademark of Bell Laboratories. operating system provides an especially congenial programming environment, in which it is not only possible, but actually natural, to write programs quickly and well. Several characteristics of the UNIX system contribute to this desirable state of affairs. Files have no type or internal structure, so data produced by one program can be used by another without impediment. The basic system interface for input and output provides homogeneous treatment of files, I/O devices and programs, so programs need not care where their data comes from or goes to. The command interpreter makes it convenient to connect programs, by arranging for all data communication. Complex procedures are created not by writing large programs from scratch, but by interconnecting relatively small components. These programs are small and concentrate on single functions, and therefore are easy to build, understand, describe, and maintain. They form a high level toolkit whose existence causes programmers to view their work as the use and creation of tools, a viewpoint that encourages growth in place of reinvention. Tools interact in a limited number of ways, but can be used in many different combinations. Thus, an addition to the toolkit tends to improve the programming power of the user faster than it increases the complexity of interconnection and maintenance. Finally, tools are connected at a very high level by a powerful command language interpreter. The error‐prone and expensive process of program writing can often be avoided in favor of program‐using. In this paper we will present a variety of examples to illustrate this methodology, focusing on those aspects of the system and supporting software which make it possible.
Brian W. Kernighan, John R. Mashey
Softw. Pract. Exp.1
1977 The mythical man-month. By Frederick P. Brooks, Jr. Addison-Wesley Publishing Company Reading, Massachusetts 1975, $6.50, 195 pages
Brian W. Kernighan
Networks1
1975 RATFOR-A Preprocessor for a Rational Fortran
abstract
Abstract Although Fortran is not a pleasant language to use, it does have the advantages of universality and (usually) relative efficiency. The RATFOR language attempts to conceal the main deficiencies of Fortran while retaining its desirable qualities, by providing decent control flow statements and some ‘syntactic sugar’. RATFOR is implemented as a preprocessor which translates this language into Fortran Once the control flow and cosmetic deficiencies of Fortran are hidden, the resulting language is remarkably pleasant to use. RATFOR programs are markedly easier to write, and to read, and thus easier to debug, maintain and modify than their Fortran equivalents It is readily possible to write RATFOR programs which are portable to other environments. RATFOR is written in itself in this way, so it is also portable; versions of RATFOR are now running on computers of six different manufacturers This paper discusses design criteria for a Fortran preprocessor, the RATFOR language and its implementation, and user experience.
Brian W. Kernighan
Softw. Pract. Exp.1
1974 Programming style
abstract
Programs written with good style are easier to read and understand, and typically smaller and more efficient than those written badly, regardless of the language used. Yet most programmers have never been taught programming style—as proof we need only look at their programs.
Brian W. Kernighan, P. J. Plauger
SIGCSE1
1973 B73-8 Systems Programming
abstract
This book is a major addition to the well-known McGraw-Hill Computer Science Series. Systems Programming, as viewed by the author, encompasses a vast array of programming areas, as can be seen from the chapter titles: Chapter 1: Background; Chapter 2: Machine Structure and Machine Language and Assembly Language; Chapter 3: Assemblers; Chapter 4: Macro Language and the Macro Processor; Chapter 5: Loaders; Chapter 6: Programming Languages; Chapter 7: Formal Systems and Programming Languages; Chapter 8: Compilers; Chapter 9: Operating Systems; and Chapter 10: Bibliography.
Brian W. Kernighan
IEEE Trans. Computers1
1971 Optimal Sequential Partitions of Graphs
abstract
This paper presents an algorithm for finding a minimum cost partition of the nodes of a graph into subsets of a given size, subject to the constraint that the sequence of the nodes may not be changed, that is, that the nodes in a subset must have consecutive numbers.The running time of the procedure is proportional to the number of edges in the graph.One possible application of this algorithm is in partitioning computer programs into pages for operation in a paging machine.The partitioning minimizes the number of transitions between pages.
Brian W. Kernighan
J. ACM1
1969 Optimal segmentation points for programs
abstract
A program may be modeled as a directed graph on n " nodes, " where the nodes are instructions, or data items, or contiguous groups of these. This paper discusses the problem of partitioning such sets of nodes into pages to minimize the number of transitions between pages during execution of the program.The node's are assumed to have a given ordering which may not be changed. We require that nodes on any page must be contiguous, so the only degree of freedom is in selecting "break points" between the pages.We show that if the expected number of transitions between each node of the program graph and its successors is known, then there is an algorithm for selecting the optima break points. The algorithm requires an execution time which grows linearly with the number of nodes in almost all cases.
Brian W. Kernighan
SOSP1