Andrew Koenig

Email via Internet: ark at acm dot org

Brief notes

I retired from AT&T in 2003. Until then, I was the Project Editor of the ISO/ANSI standards committee for C++.

On November 14, 1997, the standards committee unanimously approved the C++ standard and released it for ratification by the national standards bodies, which unanimously ratified it by letter ballot during 2Q98. Copies are available for sale (price: $18.00) in machine-readable form from ANSI.

In 2001, the committee approved a revision of the standard, for which editing, proofreading, and approval proceeded through 2001 and 2002. That work is now complete; if you order a copy of the standard, you should get the latest version. In addition, the standard is available as a book. You can see an unofficial list of the changes in PDF and PostScript forms.

I write a lot about design and programming issues in C++.

Interests

music, old and new, photography, cooking, wine, chess, bridge, interactive software

Publications

C Traps and Pitfalls, ISBN 0-201-17928-8, Addison-Wesley 1989

Ruminations on C++, compiled and edited by Barbara Moo (ISBN 0-201-42339-1, Addison-Wesley 1997).

Accelerated C++, by Andrew Koenig and Barbara E. Moo (ISBN 0-201-70353-X, Addison-Wesley 2000).

Articles in Other articles

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, is 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, is 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, is 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.