Andrew Koenig (programmer)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Andrew R. Koenig
Born June 1952
New York City
Nationality USA
Education B.S.; M.S. Computer Science
Alma mater Columbia University
Occupation Computer Scientist
Known for Computer Science, C++, computer programming, author; the "Koenig Lookup"
Notable work(s) C Traps and Pitfalls (1988)
Ruminations on C++ (1997)
Accelerated C++ (2000)
Spouse(s) Barbara E. Moo [1]
Parents Dr. Seymour H. Koenig (physicist)
Harriet Koenig (author)
Website
www.acceleratedcpp.com/authors/koenig

Andrew R. Koenig (born June 1952) is a former AT&T and Bell Labs researcher and programmer. He is the author of C Traps and Pitfalls, 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".[2] He served as the Project Editor of the ISO/ANSI standards committee for C++,[3] has authored over 150 papers on C++, and is listed as inventor on four patents.[4]

Early life and career[edit]

Koenig was born in New York City, and is the son of the physicist, Dr. Seymour H. Koenig,[5] a former director of the IBM Watson Laboratory, and Harriet Koenig, an author and collector of Native American Indian art.[6]

He graduated from the The Bronx High School of Science in 1968 [7] and went on to receive a BS and MS degree from Columbia University 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.[8]

In 1977, he joined the technical staff of Bell Labs in Murray Hill, New Jersey, 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, on a different computer language, PL/I. In 1977, as a recently hired staff member at Bell Labs, he presented a paper called "PL/I Traps and Pitfalls" at a SHARE meeting in Washington, DC.[9]

Patents[edit]

  • 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."

Selected bibliography[edit]

Books[edit]

  • Koenig, Andrew, C Traps and Pitfalls, Reading, Mass. : Addison-Wesley, 1988, c1989. ISBN 0-201-17928-8
  • 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

Papers[edit]

1999[edit]

  • 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[edit]

  • 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[edit]

  • 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[edit]

  • 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[edit]

  • 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[edit]

  • 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)

1992[edit]

  • Space-Efficient Trees in C++. C++ Conference 1992: 117-130

1991[edit]

  • 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[edit]

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

1988[edit]

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

1986[edit]

1984[edit]

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

1977[edit]

  • "PL/I Traps and Pitfalls", presented at the SHARE conference, 1977.

References[edit]

  1. ^ Bio: Barbara E. Moo
  2. ^ Sutter, Herb (March 1998). "What's In a Class? - The Interface Principle". C++ Report. Retrieved 21 February 2010. 
  3. ^ Sutter, Herb (22 October 2000). "Minutes of ISO WG21 Meeting, October 22, 2000". ISO Working Group 21. Retrieved 21 February 2010. 
  4. ^ "ACCU Presents: The Java and C/C++ Seminars (15–18 September 1999)". ACCU. 23 September 1999. Retrieved 21 February 2010. 
  5. ^ "Seymour H. Koenig", Columbia University Computing History
  6. ^ Koenig, Harriet; Koenig, Seymour H., Navajo weaving, Navajo ways, Katonah, N.Y. : Katonah Gallery, 1986. ISBN 0-915171-03-1
  7. ^ "Notable Alumni", Bronx High School of Science website
  8. ^ da Cruz, Frank (6 February 2010). "Columbia University Computing History". Columbia University Information Technology. Archived from the original on 11 March 2010. Retrieved 21 February 2010. 
  9. ^ Cf. Koenig, preface to "C Traps and Pitfalls".

External links[edit]