Andrew Koenig (programmer)
Encyclopedia
Andrew R. Koenig is a former AT&T
AT&T
AT&T Inc. is an American multinational telecommunications corporation headquartered in Whitacre Tower, Dallas, Texas, United States. It is the largest provider of mobile telephony and fixed telephony in the United States, and is also a provider of broadband and subscription television services...

 and Bell Labs
Bell Labs
Bell Laboratories is the research and development subsidiary of the French-owned Alcatel-Lucent and previously of the American Telephone & Telegraph Company , half-owned through its Western Electric manufacturing subsidiary.Bell Laboratories operates its...

 researcher and programmer. He is the author of C Traps and Pitfalls
C Traps and Pitfalls
C Traps and Pitfalls is a slim computer programming book by former AT&T researcher and programmer Andrew Koenig, its first edition still in print in 2005, which outlines the many ways in which beginners and even sometimes quite experienced C programmers can write poor, malfunctioning and...

, co-author (with Barbara Moo) of Accelerated C++ & Ruminations on C++, and his name is associated with argument-dependent name lookup, also known as "Koenig lookup". He served as the Project Editor of the ISO/ANSI standards committee for C++, has authored over 150 papers on C++, and is listed as inventor on four patents.

Early life and career

Koenig was born in New York City, and is the son of the physicist, Dr. Seymour H. Koenig , a former director of the IBM Watson Laboratory
Thomas J. Watson Research Center
The Thomas J. Watson Research Center is the headquarters for the IBM Research Division.The center is on three sites, with the main laboratory in Yorktown Heights, New York, 38 miles north of New York City, a building in Hawthorne, New York, and offices in Cambridge, Massachusetts.- Overview :The...

, and Harriet Koenig, an author and collector of Native American Indian art.

He graduated from the The Bronx High School of Science in 1968 and went on to receive a BS and MS degree from Columbia University
Columbia University
Columbia University in the City of New York is a private, Ivy League university in Manhattan, New York City. Columbia is the oldest institution of higher learning in the state of New York, the fifth oldest in the United States, and one of the country's nine Colonial Colleges founded before the...

 in New York. He was a prominent member of the Columbia University Center for Computing Activities (CUCCA) in the late 1960s and 1970s,. He wrote the first e-mail program used at the university.

In 1977, he joined the technical staff of Bell Labs in Murray Hill, New Jersey
Murray Hill, New Jersey
Murray Hill is an unincorporated area within portions of both Berkeley Heights and New Providence, located in Union County in northern New Jersey, United States....

, from which he later retired.

The first book he authored, in 1987, C Traps and Pitfalls, had been motivated by his prior paper and work, mostly as a staff member at Columbia University
Columbia University
Columbia University in the City of New York is a private, Ivy League university in Manhattan, New York City. Columbia is the oldest institution of higher learning in the state of New York, the fifth oldest in the United States, and one of the country's nine Colonial Colleges founded before the...

, on a different computer language, PL/I
PL/I
PL/I is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications...

. In 1977, as a recently hired staff member at Bell Labs, he presented a paper called "PL/I Traps and Pitfalls" at a SHARE
SHARE (computing)
SHARE Inc. is a volunteer-run user group for IBM mainframe computers that was founded in 1955 by Los Angeles-area IBM 701 users. It evolved into a forum for exchanging technical information about programming languages, operating systems, database systems, and user experiences for enterprise users...

 meeting in Washington, DC.

Patents

  • User Authentication System Employing Encryption Functions, #4,590,470. "Combines public-key random challenge-response authentication with hiding the authentication algorithm in a device that makes available only the algorithm's inputs and outputs. That secures the session against eavesdropping and replay and requires no secret information on the host."
  • Storing trees in navigable form, #5,530,957. "A technique for storing trees (such as representations of source programs in a programming environment) that completely eliminates space overhead normally associated with storing pointers, while still permitting common navigational operations with reasonable time efficiency."
  • Method and apparatus for parsing source code using prefix analysis, #5,812,853, "A technique for speeding up preliminary processing, such as macro preprocessing, in a compiler by remembering useful prefix strings of the input program in a tree-like data structure and keying those strings to remembered states of the compiler."
  • Method and apparatus for paging alternate users, #6,057,782, "The idea of allowing paging systems that support acknowledgments to reorder their list of destinations for future pages based on the acknowledgment or lack thereof on previous pages."

Books

  • Koenig, Andrew, C Traps and Pitfalls, Reading, Mass. : Addison-Wesley, 1988, c1989. ISBN 0201179288
  • Koenig, Andrew; Moo, Barbara, Ruminations on C++, Addison-Wesley, 1997. ISBN 0-201-42339-1
  • Koenig, Andrew; Moo, Barbara, Accelerated C++, Addison-Wesley, 2000.ISBN 0-201-70353-X

1999

  • Andrew Koenig, Barbara Moo: Teaching Standard C++, Part 2. Journal of Object Oriented Programming (JOOP) 11(8): 64-67 (1999)
  • Andrew Koenig, Barbara Moo: Teaching Standard C++, Part 3. JOOP 11(9): 59-63 (1999)

1998

  • A Quiet Revolution. JOOP 10(8): 10-13, 16 (1998)
  • Report from Morristown. JOOP 10(9): 5-8 (1998)
  • A Programming Revolution in Languages Founded on Object Logic. JOOP 11(1): 13-16 (1998)
  • Is Abstraction Good? JOOP 11(2): 66-69 (1998)
  • Simulating Dynamic Types in C++, Part 1. JOOP 11(3): 76-78, 80 (1998)
  • Simulating Dynamic Types in C++, Part 2. JOOP 11(4): 63-67 (1998)
  • Why Are Vectors Efficient? JOOP 11(5): 71-75 (1998)
  • A Standard C++ Appetizer. JOOP 11(6): 85-87 (1998)
  • Andrew Koenig, Barbara Moo: Teaching Standard C++. JOOP 11(7): 11-17 (1998)

1997

  • C++ in the Classroom: A Look Forward. JOOP 10(1): 59-61 (1997)
  • Turning an Interface Inside out. JOOP 10(2): 56-58 (1997)
  • Which Container Should we Teach First? JOOP 10(3): 10-12 (1997)
  • A ``++decade of C++. JOOP 10(4): 20-23, 34 (1997)
  • Inheritance and Abbreviations. JOOP 10(5): 6-9, 21 (1997)
  • Report from London. JOOP 10(6): 11-16 (1997)
  • Compile-Time Type Computation. JOOP 10(7): 11-14 (1997)
  • The Importance - and Hazards - of Performance Measurement. JOOP 9(8): 58-60 (1997)
  • Iterator Iterators and Temporal Sequences. JOOP 9(9): 66-67, 71 (1997)

1996

  • Idiomatic Design, invited talk for ACM OOPSLA'95; published in Post-conference Proceedings and reprinted in abridged form in CACM Vol. 39, No. 11, November, 1996.
  • Function Adaptors. JOOP 8(8): 51-53 (1996)
  • Compatibility vs. Progress. JOOP 8(9): 48-50 (1996)
  • Generic Input Iterators. JOOP 9(1): 72-75 (1996)
  • Memory Allocation and C Compatibility. JOOP 9(2): 42-43, 54 (1996)
  • C++ as a First Language. JOOP 9(3): 47-49 (1996)
  • Design, Behavior, and Expectation. JOOP 9(4): 79-81 (1996)
  • Interface and Initiative. JOOP 9(5): 64-67 (1996)
  • Arithmetic Sequence Iterators. JOOP 9(6): 38-39, 92 (1996)
  • Collection in C++: No Panacea, but Useful. JOOP 9(7): 55-57 (1996)

1995

  • Introduction to Iterator Adaptors. JOOP 7(8): 66-68 (1995)
  • Polymorphic Reflections. JOOP 7(9): 65-67, 80 (1995)
  • Patterns and Antipatterns. JOOP 8(1): 46-48 (1995)
  • Is Programming Like Photography? JOOP 8(2): 73-75 (1995)
  • Wrapping up the Standard. JOOP 8(3): 60-62 (1995)
  • An Example of Language-Sensitive Design. JOOP 8(4): 56-58, 61 (1995)
  • Function Objects, Templates, and Inheritance. JOOP 8(5): 65-68, 84 (1995)
  • Variations on a Handle Theme. JOOP 8(6): 77-80 (1995)
  • Another Handle Variation. JOOP 8(7): 61-63 (1995)
  • Idiomatic design. OOPS Messenger 6(4): 14-19 (1995)
  • Andrew Koenig, Bjarne Stroustrup: Foundations for Native C++ Styles Softw., Pract. Exper. 25(S4): S4/45-S4/86 (1995)

1994

  • An anecdote about ML type inference, USENIX Very High Level Languages Symposium, October 1994, Santa Fe
  • When to Write Buggy Programs. JOOP 7(1): 80-82 (1994)
  • Libraries in Everyday Use. JOOP 7(2): 68-72, 80 (1994)
  • Templates and Generic Algorithms. JOOP 7(3): 45-47 (1994)
  • Surrogate Classes in C++. JOOP 7(4): 71-72, 80 (1994)
  • Generic Iterators. JOOP 7(5): 69-72 (1994)
  • Thoughts on Abstraction. JOOP 7(6): 68-70 (1994)

1991

  • Andrew Koenig, Thomas A. Cargill, Keith E. Gorlen, Robert B. Murray, Michael Vilot: How Useful is Multiple Inheritance in C++? C++ Conference 1991: 81-84

1990

  • Andrew Koenig, Bjarne Stroustrup: Exception Handling for C++. C++ Conference 1990: 149-176

1988

  • Associative arrays in C++, Summer 1988 Usenix Conference (pp. 173–186), San Francisco

1986


1984

  • Automatic Software Distribution, Summer 1984 Usenix Conference (pp. 87–106), Portland, Oregon

1977

  • "PL/I Traps and Pitfalls", presented at the SHARE
    SHARE (computing)
    SHARE Inc. is a volunteer-run user group for IBM mainframe computers that was founded in 1955 by Los Angeles-area IBM 701 users. It evolved into a forum for exchanging technical information about programming languages, operating systems, database systems, and user experiences for enterprise users...

     conference, 1977.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK