Alexander A. Stepanov
This site is a collection of Alex Stepanov's papers, class notes, and source code, covering
generic programming and other topics. Contact person: paul.mcjones@adobe.com For updates, subscribe via RSS
Notice: Some of the documents distributed by this server have
been provided by the contributing authors as a means to ensure timely dissemination
of scholarly and technical work on a noncommercial basis. Copyright and all
rights therein are maintained by the authors or by other copyright holders,
notwithstanding that they have offered their works here electronically. It is
understood that all persons copying this information will adhere to the terms
and constraints invoked by each author's copyright. These works may not be reposted
without the explicit permission of the copyright holder.
- Alexander Stepanov and Paul McJones: Elements of Programming. Book, in progress, last updated July 15, 2008. Corrections/suggestions welcome; email to paul.mcjones@adobe.com RSS
- Combined version (973 slides). PDF
- Source code. C++ LaTeX
- Individual sections:
- Preface: Mathematics of practical programming. PDF
- Chapter 1 - Foundations: values, objects, types, procedures, concepts. PDF
- Chapter 2 - Transformations and their orbits. PDF
- Chapter 3 - Deriving algorithms using elementary algebra. PDF
- Chapter 4 - Orderings. PDF
- Chapter 5 - Combining concepts: ordered algebraic structures. PDF
- Chapter 6 - Refining concepts of iterators. PDF
- Chapter 7 - Permutations and rearrangements. PDF
- Chapter 8 - Rotations. PDF
- Chapter 9 - Algorithms on increasing ranges. PDF
- Chapter 10 - Coordinate structures. PDF
- Chapter 11 - Composite objects. PDF
- Conclusions: hopes for the future. PDF
- Appendix 1 - Mathematical notation. PDF
- Appendix 2 - C++ machinery. PDF
- Acknowledgements. PDF
- D. Kapur, D.R. Musser, and A.A. Stepanov: Operators and Algebraic Structures.
Proceedings of the 1981 conference on Functional programming languages and computer
architecture, pages 59-63. PDF (online)
- Also appears as
General Electric Company, Corporate Research and Development, Report
81CRD114. PDF
- Deepak Kapur, David R. Musser, and Alexander A. Stepanov: Tecton: A Language
for Manipulating Generic Objects. In Program Specification, Proceedings of a Workshop, Aarhus, Denmark, August 1981, J. Staunstrup, editor, Lecture Notes In Computer Science, volume 134, Springer-Verlag, London, pages 402-414. PDF
- Alexander Stepanov and Aaron Kershenbaum: Using Tournament Trees to
Sort, Center for Advanced Technology in Telecommunications Technical Report
86-13, Polytechnic University of New York, 1986.
PDF
- Alexander A. Stepanov, Aaron Kershenbaum, and David R. Musser: Higher Order
Programming. March 5, 1987. PDF
- David R. Musser and Alexander A. Stepanov: A library of generic algorithms
in Ada. Proceedings of the 1987 annual ACM SIGAda international conference on
Ada, pages 216-225. PDF (online)
- Also:
slides from conference presentation. PDF
- Aaron Kershenbaum, David Musser, and Alexander Stepanov:
Higher Order Imperative Programming. Rensselaer Polytechnic Institute Computer
Science Department, Technical Report 88-10. April 1988. PDF
PostScript
- David R. Musser and Alexander A. Stepanov: Generic Programming. ISSAC 1988,
pages 13-25. PDF PostScript
- D.R. Musser and A.A. Stepanov: Ada Generic Library Linear Data Structure
Packages, Release 1.1, General Electric Company, Corporate Research and
Development.
- Volume One, Report 88CRD112, March 4, 1988. PDF
- Volume Two, Report 88CRD113, March 3, 1988. PDF
- David R. Musser and Alexander A. Stepanov: The Ada Generic Library Linear
List Processing Packages, Springer-Verlag, 1989, 289 pages.
- D. Kapur, D. Musser, W. Olthoff, A. Snyder, A. Stepanov, and A. Szymanski. A Prototyping Language for Rapid Reuse : Technical Proposal. Software Technology Laboratory Report STL-89-10, Hewlett-Packard Laboratories, 1989. PDF
- Alexander A. Stepanov: Design of Generic Libraries. Lecture given at
SRI, 1991. PDF
- David R. Musser and Alexander A. Stepanov: Algorithm-oriented Generic Libraries.
- Software—Practice and Experience, Vol. 24(7), July 1994, pages 623–642. PDF
PostScript
- HP Laboratories
Technical Report 94-13, February 1994. PDF (online)
- Preprint. September 1993. PDF PostScript
- Algorithm-Oriented Generic Libraries. Rensselaer Polytechnic Institute Computer Science Department Technical Report 92-23, 1993.
- Algorithm-Oriented Generic Software Library Development. HPL-92-65(R.1),
November 1993 PDF (online)
- Algorithm-Oriented Generic Software Library Development. Rensselaer Polytechnic Institute Computer Science Department Technical Report 92-13, April 1992.
- Mehdi Jazayeri, Meng Lee, and Alex Stepanov: Generic C++ Components. Hewlett-Packard Laboratories/CSL/CCD/PAP/CLL talk, October 4, 1993, 17 slides. PDF
- Alexander A. Stepanov: Science of C++ Programming. Invited presentation to C++ standards committee, San Jose, California, November 11, 1993, 25 slides. PDF
- Meng Lee & Alexander Stepanov: Science of C++ Programming. Hewlett-Packard Laboratories, January 1994, 45 slides. PDF
- Alexander Stepanov & Meng Lee: The Standard Template Library. Presentation to the C++ standards committee, March 7, 1994, 19 slides. PDF
- Alexander Stepanov and Meng Lee: The Standard Template Library. HP Laboratories
Technical Report 95-11(R.1), November 14, 1995.
PDF PostScript FrameMaker
- Revised version of A. A. Stepanov and M. Lee: The Standard Template Library, Technical Report
X3J16/94-0095, WG21/N0482, ISO Programming Language C++ Project, May 1994.
- Supercedes Alexander Stepanov and Meng Lee: The Standard Template Library. HP Laboratories
Technical Report 94-34(R.1), April 13, 1994.
- Alexander Stepanov: The Standard Template Library. BYTE Magazine,
October 1995. HTML (online)
Note: in the code for remove_copy_if, the expression !prod(*first)
should be !pred(*first).
- Matthew H. Austern, Ross A. Towle, and Alexander A. Stepanov: Range partition
adaptors: a mechanism for parallelizing STL. ACM SIGAPP Applied Computing Review,
Volume 4, Issue 1. Spring 1996, pages 5-6. PDF
(online)
- Alexander Stepanov: Generic Programming. Keynote Chapter presented at The Second International
Andrei Ershov Memorial Conference on Perspectives of System Informatics; abstract appears in Chapter
Notes In Computer Science, June 1996, page 40.
- David R. Musser and Alexander A. Stepanov: Generic Programming Projects
and Open Problems. August 25, 1998. online (local) PDF
PostScript
- James C. Dehnert and Alexander A. Stepanov: Fundamentals of Generic
Programming. Report of the Dagstuhl Seminar on Generic Programming, Schloss Dagstuhl,
Germany, Apr. 1998. Chapter Notes in Computer Science (LNCS)
volume 1766, pages 1-11. PDF PostScript
- Alexander Stepanov: Greatest Common Measure: the Last 2500 Years. Chapter
originally prepared as the 1999 Arthur Schoffstall Chapter in Computer Science
and Computer Engineering at the Rensselaer Polytechnic Institute (updated
June 2004). PDF PowerPoint
- Also: Video of
same Chapter presented at SmartFriends U, September 27, 2003 (by permission
of SmartFriends)
QuickTime
- P.J. Plauger, Meng Lee, David Musser, and Alexander A. Stepanov: C++
Standard Template Library. Prentice Hall PTR, December 2000, 498 pages.
- Alexander Stepanov: Foreword. Appears in David R. Musser, Gillmer J. Derge, and Atul
Saini, STL Tutorial and Reference Guide, Second Edition: C++ Programming
with the Standard Template Library. Boston, MA: Addison-Wesley, 2001.
PDF
- Alexander Stepanov: STL and Its Design Principles. Talk presented at
Adobe Systems Inc., January 30, 2002.
PDF PowerPoint Real Player
- Alexander Stepanov: Foreword. Appears in Jeremy G. Siek, Lie-Quan Lee and Andrew
Lumsdaine: The Boost Graph Library: User Guide and Reference Manual.
Boston, MA: Addison-Wesley, 2002. HTML
PDF
- Alexander Stepanov: Future of Abstraction. A keynote address at Joint
ACM Java Grande - ISCOPE 2002 Conference, Seattle, Washington, November
3-5, 2002. Abstract PDF PowerPoint
- Alexander Stepanov: Designing Efficient Libraries. Talk presented at Adobe System Inc., July 21, 2003.
PDF PowerPoint
- Alexander Stepanov: Short History of STL.
Contributed to Evolving a language in and for the real world: C++ 1991-2007 by Bjarne Stroustrup, August 10, 2006. PDF
Logic
- D. Kapur, D.R. Musser, and A.A. Stepanov: A Guide to Tecton and Natural
Logic, working document, General Electric Research & Development Center,
July 1983. PDF
- D. Kapur, D.R. Musser, and A.A. Stepanov: Notes on a Logic of Objects,
working document, General Electric Research & Development Center, July 1983.
PDF
- D. Kapur, D.R. Musser, and A.A. Stepanov: Modalities, Abstraction and
Reasoning, working document, General Electric Research & Development Center,
July 1983. PDF
- D. Kapur, D.R. Musser, and A.A. Stepanov: Syntax of the Tecton Language,
working document, General Electric Research & Development Center, February
1983. PDF
- Alexander Stepanov: Towards a Theory of Causal Implication, Department
of Electrical Engineering and Computer Science, Polytechnic University of
New York, 1985.
PDF Word
Robotics
- V. Lumelsky and A. Stepanov: Navigation Strategies for an Autonomous
Vehicle with Incomplete Information on the Environment. General Electric
Company, Corporate Research and Development, Report 84CRD070.
PDF
- Vladimir J. Lumelsky and Alexander A. Stepanov: Effect of Uncertainty on
Continuous Path Planning for an Autonomous Vehicle. Proceedings of 23rd
Conference on Decision and Control, Las Vegas NV, December 1984, pages
1616-1621. PDF
- V. Lumelsky and A. Stepanov: Dynamic path planning for a mobile automaton
with limited information on the environment. IEEE Trans. on Automatic Control,
AC-31, pages 1058-1063, 1986. PDF
- V. Lumelsky and A. Stepanov: Path planning strategies for a point mobile
automaton moving amidst unknown obstacles of arbitrary shape. Algorithmica,
Volume 2, pages 403-430, 1987.
PDF Republished in Autonomous robot vehicles,
pages 363-390, 1990.
Storage systems
- Robert M. English and Alexander A. Stepanov: Loge: a self-organizing disk
controller. Proceedings of USENIX Winter 1992 Technical Conference, January
20-24, 1992 (San Francisco, CA), pages 237-251. PDF
PostScript
- Chia Chao, Robert English, David Jacobson, Alexander Stepanov, and John Wilkes:
Mime: a high performance parallel storage device with strong recovery guarantees.
HP Laboratories Technical Report HPL-CSP-92-9rev1, March 1992, revised November
1992. PDF PostScript
- John Wilkes, Chia Chao, Robert English, David Jacobson, Bart Sears, Carl
Staelin, and Alex Stepanov: DataMesh parallel storage servers. ACM SIGOPS Operating
Systems Review, Volume 26 , Issue 2, April 1992, page 11.
PDF (online)
- John Wilkes, with Chia Chao, Robert English, David Jacobson, Sai-Lai Lo,
Chris Ruemmler, Bart Sears, Alex Stepanov, and Rebecca Wright: DataMesh research
project, phase 1. Proceedings of USENIX Workshop on File Systems (Ann Arbor,
MI), 21-22 May 1992, pages 63-69. PDF
PostScript
- Chia Chao, Robert English, David Jacobson, Bart Sears, Alexander Stepanov,
and John Wilkes: DataMesh Architecture 1.0. HP Laboratories Technical Report
HPL-92-153, December 1992. PDF
PostScript
Various talks
- Alexander Stepanov: Professionalism in Programming. Presented at Adobe
Systems Inc., April 17, 2003.
PDF PowerPoint
- Alexander Stepanov: Industrializing Software Development. A keynote
address at The First International Conference on Embedded Software and
System, Zhejiang University, Hangzhou, P. R. China, December 9, 2004.
PDF PowerPoint
Interviews
- Al Stevens Interviews Alex Stepanov: Dr. Dobb's Journal. March 1995.
PDF HTML
(online)
- Graziano Lo Russo: An Interview with A. Stepanov:
Edizioni Infomedia S.r.l.
PDF HTML
(online)
Original Italian version. PDF
- Yuyong Zhao: An interview with Alex Stepanov. Chinese Popular
Computer Week, 28 February 2005. PDF
Original Chinese version. PDF
HTML
Bibliographies
Source code
- Alexander Stepanov: Scheme higher order programming library, August
1986. .tar unpacked notes
- Alexander Stepanov: gclib, AT&T Bell Laboratories, 1987. With only cosmetic changes, this became Array_alg within the USL C++ Standard Components. C documentation
- David R. Musser and Alexander A. Stepanov: Ada Generic Library (source
files described in The Ada Generic Library: Linear List Processing
Packages, Compass Series, Springer-Verlag, 1989). .zip unpacked README
- Alexander Stepanov: Algorithmic simulation and measurement codes, 1993. .zip unpacked
- Alexander Stepanov and Meng Lee: The Standard Template Library, HP
Laboratories, release of October 31, 1995. ZIP unpacked
- Alex Stepanov: Abstraction Penalty Benchmark, version 1.2 (KAI). Silicon
Graphics, Incorporated, 199?. C++
- Also appears as Appendix
D.3 of Technical Report on C++ Performance, ISO/IEC PDTR 18015, 11 August 2003 PDF
- Matthew Austern and Alexander Stepanov: jal (Java Algorithm Library),
Silicon Graphics, Incorporated, 1996. Source (generic) version: .tar.gz unpacked Source (instantiated) version: .jar documentation
- Matt Austern with Hans Boehm (managed by Alexander Stepanov). SGI
Standard Template Library. Source code and documentation for the version of
the Standard Template Library developed at Silicon Graphics, Inc. during
1996-1999. (online)
- Bjarne Stroustrup and Alex Stepanov: Standard Container Benchmark, version 0.9. May 2003 C++
Note: The documents in this section have been superseded by Elements of Programming (see above).
- Alexander Stepanov: Notes for the Higher Order Programming in Scheme
course taught at the General Electric Corporate R&D Center. Schenectady, New
York, July 1986. PDF text
- A.A. Stepanov: CS 603 Notes. Department of Electrical Engineering and
Computer Science, Polytechnic University of New York, 1986(?). PDF
- Alexander A. Stepanov: Handouts for the Advanced Programming class taught by
David R. Musser at Rensselaer Polytechnic Institute. 1990. PDF
- Jim Dehnert, Alexander Stepanov, and John Wilkinson: Incomplete notes
for the Generic Programming course taught by Alex at Silicon Graphics Inc. December 1998. HTML PDF
- Alexander Stepanov: Incomplete notes for the Foundations of
Programming course taught at Adobe. May 2004 (corrected version May 2005). PDF Word
- Alexander A. Stepanov and Matthew A. Marcus: Notes for the Foundations of Programming
course at Adobe. 2004-2005.
- Section 1 (mathematical
preliminaries up to RSA). PDF
- Section 2 (generic programming). PDF
- Section 3 (partition algorithms). PDF Word
- Alexander Stepanov: Notes for the Programming course at Adobe. 2005-2006 (updated October 2007 to fix bugs in partition_bidirectional). PDF Word
Acknowledgments
Paul McJones maintains this collection. He began in the spring of 2004, with the assistance of
Dave Musser, Meng Lee, Jim Dehnert, Jeremy Siek, Mat Marcus, and Alex Stepanov.
We thank Professor Andrew Lumsdaine of Indiana University for providing hosting for this website at Open Systems Lab, and we thank DongInn Kim of OSL for his help.
July 15, 2008