Curriculum Vitae - David M. Beazley
Education
- Ph.D. in Computer Science, University of Utah. Salt Lake City, Utah. 1998.
- M.S. in Mathematics, University of Oregon. Eugene, Oregon. 1993.
- B.A. in Mathematics, Fort Lewis College, Durango, Colorado. 1991.
Professional Experience
- Owner/Operator, Dabeaz LLC, Chicago, Illinois. 2007-present.
- Adjunct Professor of Practice, Department of Computer Science, Brown University. Providence, Rhode Island. 2023-2025.
- Consultant/expert witness. Chicago, Illinois. 2005-2007.
- Assistant Professor (tenure-track), Department of Computer Science, University of Chicago, Chicago, Illinois. 1998-2005.
- Staff Research Assistant, Condensed Matter and Statistical Physics Group (T-11), Theoretical Physics
Division, Los Alamos National Laboratory, Los Alamos, New Mexico. 1991-1997.
- Undergraduate Internship, Cognitive Systems Engineering Group (A-6), Los Alamos National Laboratory, Los Alamos, New Mexico. Summer 1990.
- Actuarial Science Internship, The Travelers Insurance Company, Hartford, Connecticut. Summer 1989.
Personal Statement
I am a computer scientist with expertise in
systems programming, programming languages, and software development
tools. I also have substantial experience with scientific and mathematical computing.
I own and operate Dabeaz LLC, a business that primarily offers
advanced programming and computer science courses for software
developers. Many working developers do not have a formal background
in computer science, but they seek to advance their knowledge. I offer
them a variety of hands-on courses based on topics typically encountered by
first-year graduate students or advanced undergraduates (e.g., compiler
writing, distributed systems, programming languages, etc.). Current courses can be found
at https://www.dabeaz.com/courses.html.
I am most known for my work with the Python programming
language where I've authored three major books, written software packages, given numerous
conference presentations, and have been involved in corporate
training.
Early Career Highlights
- Supercomputing: At Los Alamos National Laboratory, I developed applications
software, algorithms, and programming techniques for massively
parallel supercomputing systems including the Connection Machine 5 and
Cray T3D. In 1996, I was the first developer to port the Python programming language
to such machines in one of the earliest uses of Python in scientific computing.
This work was presented at the 1996 IEEE Supercomputing conference.
- SWIG Project: In 1996, I created a tool called SWIG
(Simplified Wrapper and Interface Generator) that automatically connected
existing C/C++ software to a wide variety of other programming
languages including Python, Perl, Tcl, Ruby, Java, C#, PHP, Scheme, and OCaml.
Details at https://www.swig.org.
- Computer Graphics and Data Visualization:
I have written three separate graphics libraries. In 1986, I
developed a 3D mathematical plotting library (written in 6502
assembler) for the Apple 2. In 1990, I wrote a high-performance
graphics and animation library in 8086 assembly for the IBM PC.
In 1995, I implemented a three-dimensional graphics library and visualization system for massively parallel
supercomputers.
- Computational Physics:
At Los Alamos National Laboratory, I worked as a computer scientist in
the Theoretical Physics division and Center for Nonlinear Studies
(CNLS). In 1991, I worked on software for solving stochastic ordinary
differential equations. In 1992, I started working on molecular
dynamics simulation software. This software was used to study
problems in materials science including structural phase transistions,
fracture, crack propagation, and dislocation dynamics. Although my
primary focus was software, I was actively involved in all aspects of
collaborative research that led to publications in Science
and Physical Review Letters.
Books
- D.M. Beazley, "Python Distilled", Addison-Wesley (2021).
- D.M. Beazley and B.K. Jones, "Python Cookbook, 3rd Edition", O'Reilly Media (2013).
- D.M. Beazley, "Python Essential Reference, 4th Edition", Addison-Wesley (2009).
Teaching Experience
I have more than 30 years of teaching experience in a variety of settings.
Dabeaz, LLC
I currently teach approximately 15-20 courses a year that rotate through the following topics:
- Compilers.
- Distributed Systems (Raft consensus algorithm).
- Structure and Interpretation of Computer Programs (SICP).
- Advanced Programming with Python.
These courses are usually taught in a week-long "immersion" format.
From 2007-2018, I taught more than 300 corporate training courses on the following topics:
- Practical Python Programming
- Advanced Python Mastery
- Python Concurrency and Distributed Systems
Some notable clients for these courses included NASA Jet Propulsion
Laboratory, Los Alamos National Laboratory, Lawrence Livermore
National Laboratory, Space Telescope Science Institute, and Hewlett
Packard Enterprise. I am not presently active with Python training
at this time (having shifted my focus to more advanced computer
science topics as described above).
University of Chicago
From 1998-2005, I was a tenure-track assistant professor in the Department of Computer Science
at the University of Chicago where I taught the following courses:
- Operating Systems. 1999-2005.
- Compilers. 2001.
- Advanced Operating Systems. 2000,2002.
- Scientific Systems Programming. 2003.
- Topics in Operating Systems. 2001.
- Networks and Distributed Systems. 1999, 2004, 2005.
- Internet Programming. 2000.
- Programming for the World Wide Web. 1999.
- Introduction to Computer Programming (SICP). 2001.
- Advanced C/C++ programming. 2003.
I also taught a course "Principles of Dynamic Languages" as an adjunct professor in
the University of Chicago masters degree program in 2008.
University of Utah
At the University of Utah, I was a teaching assistant for the following
courses.
- Elementrary Computer Architecture. 1994.
- Digital Logic Design. 1995.
- Computer Organization. 1995.
- Computer Design Laboratory. 1995.
- Advanced Computer Architecture. 1995.
- Advanced Methods in Scientific Computing. 1996.
In Fall 1995, I received the College of Engineering Outstanding Teaching Assistant Award.
University of Oregon
From 1991-1993, I taught the following courses:
- College Algebra
- Analytic Geometry (pre-calculus)
- Calculus I
Conference Tutorials and Short Courses
I have occasionally given tutorials at conferences or by invitation. The following list includes some of these
short courses. Videos available at https://www.dabeaz.com/tutorials.html.
- "Build Your Own Async", at PyCon India 2019, Chennai, India. October 14, 2019.
- "Lambda Calculus", at PyCon 2019, Cleveland, Ohio. May 1, 2019.
- "Modules and Packages: Live and Let Die!", at PyCon 2015, Montreal Canada. April 9, 2015.
- "Generators: The Final Frontier", at PyCon 2014, Montreal, Canada. April 10, 2014.
- "Python 3 Metaprogramming", at PyCon 2013, Santa Clara, California. March 14, 2013.
- "Learn Python Through Public Data Hacking", at PyCon 2013, Santa Clara, California. March 13, 2013.
- "Mastering Python 3 I/O", at PyCon 2011, Atlanta, Georgia. March 10, 2011
- "The Python Programming Language", At USENIX Technical Conference, June 14, 2009
- "An Introduction to Python Concurrency", at USENIX Technical Conference, June 13, 2009.
- "Python Generator Hacking", at USENIX Technical Conference, June 13, 2009.
- "A Curious Course on Coroutines and Concurrency", at PyCon 2009, Chicago, Illinois. March 25, 2009.
- "Generator Tricks for Systems Programmers", at PyCon 2008, Chicago, Illinois. March 13, 2008.
- "SWIG Master Class", at PyCon 2008, Chicago, Illinois. March 13, 2008.
- "Python in Action", at USENIX LISA, Dallas, Texas. November 16, 2007.
- "A Short Course on Python and Scientific Software", at
Katholieke Universiteit Leuven, Belgium. January 21, 2002.
- "Introduction to Python", at the O'Reilly Open Source Conference. Monterey, CA. July, 2000.
- "Advanced Python Programming", at the O'Reilly Open Source Conference. Monterey, CA. July, 2000.
- "Tcl Extension Building and SWIG", at the 2000 USENIX Tcl/Tk Conference,
Austin, Texas. February, 2000.
- "Tcl Extension Building", and at the 1998 USENIX Tcl/Tk Conference, San Diego,
California. September, 1999. With Gerald Lester.
- "Integrating C/C++ and Python with SWIG", at the 7th International
Python Conference, Houston, Texas. November, 1998.
- "Integrating C/C++ and Python with SWIG", at the 6th International
Python Conference, San Jose, California. October 14, 1997.
Public Speaking
I have given numerous conference and industry talks. This section is divided into invited talks and submitted talks. See https://www.dabeaz.com/talks.html for video links.
Invited Talks
- Keynote: "The Problem with the Problem", PyCon Sri-Lanka, February 22, 2022. (online)
- Keynote: "Begin... end?", PyData Global, October 28, 2021. (online)
- Keynote: "No, not typing. Types", EuroPython 2021, July 30, 2021. (online)
- Invited: "The Past, Present, and Future of my "Python Optional" Physics Experiment",
CWI Lectures on Programming and Cryptology, CWI, Amsterdam. November 21, 2019. Note: one of
only four invited talks given to honor Guido van Rossum upon receiving the 2019 Dijkstra Fellowship.
- Keynote: "A Talk Near the Future of Python", PyCon India, Chennai. October 13, 2019.
- Keynote: "Die Threads", EuroPython 2018, Edinburgh, Scotland. July 25, 2018.
- Keynote: "Iterations of Evolution", PyCon Pakistan, December 16, 2017. (online)
- Keynote: "The Other Async (Threads + Asyncio = Love)", PyGotham, New York City. October 7, 2017.
- Keynote: "The Fun of Reinvention", PyCon Israel, Tel Aviv. June 12, 2017.
- Keynote: "Builtin Superheroes", PyData Chicago, August 28, 2016.
- Keynote: "Fear and Awaiting in Async: A Savage Journey to the Heart of the Coroutine Dream", PyOhio, Columbus, Ohio. July 30, 2016.
- Keynote: "Keynote: Topics of Interest (Asyncio)", PyCon Brasil 2012, São José dos Campos, Brasil. November 15, 2015.
- Keynote: "Keynote: Making with Python 3", PyCon Taiwan, Tapei City. May 25, 2013.
- Keynote: "Rethinking Extension Programming", EuroSciPy 2012, Brussels, Belgium. August 25, 2012
- Keynote: "Let's Talk about PyPy", PyCon 2012, Santa Clara, California. March 10, 2012.
- Invited: "In Search of the Perfect Global Interpreter Lock", RuPy 2011, Poznan, Poland. October 15, 2011.
- Invited: "Embracing the Global Interpreter Lock", PyCodeConf, Miami, Florida. October 6, 2011.
- Keynote: "Python Concurrency", SciPy 2010, Austin, Texas. June 28, 2010.
- Invited: "Why Extension Programmers Should Stop Worrying About Parsing and Start Thinking About Type Systems", LL2 Conference, MIT, Boston. November 9, 2002.
- Invited: "Scientific Computing and Scripting Language Extension Programming", Stanford University, April 10, 2002.
- Invited: "Scientific Computing with Python", ADASS'99, Hawaii, October 4, 1999.
- Keynote: "Keynote: Commodity Supercomputing with Python", 7th International Python Conference, Houston, Texas. November 12, 1998.
- Invited: "Scripting, SWIG, and the Creation of High Performance Scientific Applications", NASA Goddard Space Flight Center, January 28, 1998.
- Invited: "Lightweight Steering Approaches for Large-scale Physics Applications", Lawrence Livermore National Laboratory, July 9. 1996.
Submitted Talks
- "Reinventing the Parser Generator", PyCon 2018, Cleveland, Ohio. May 12, 2018.
- "Python Concurrency from the Ground Up. Live!", PyCon 2015, Montreal, Canada. April 10, 2015.
- "Discovering Python", PyCon 2014, Montreal, Canada. April 12, 2014.
- "Python: A Toy Language", PyCon 2013, Santa Clara, California. March 15, 2013.
- "Using Python 3 to Build a Cloud Computing Service for my Superboard II", PyCon 2011, Atlanta, Georgia. March 11, 2011.
- "Understanding the Python GIL", PyCon 2010, Atlanta, Georgia. February 10, 2010.
- "Writing Parsers and Compilers with PLY", PyCon 2007, Dallas, Texas. February 23, 2007.
- "Reintroducing Swig", 10th International Python Conference, Alexandria, Virginia. February 5, 2002.
- "WAD: A Module for Converting Fatal Extension Errors into Python Exceptions", 9th International Python Conference, Long Beach, California. March 6, 2001.
- "Feeding a Large-scale Physics Application to Python", 6th International Python Conference, San
Jose, October 14-17.
- "Using SWIG to Control, Prototype, and Debug C Programs with Python", 4th International Python Conference, Livermore, California. June 5, 1996.
Academic Publications
Note: I have not been active with academic publication since leaving academia in 2005.
- D.M. Beazley, "SWIG: An Extensible Compiler for Creating Scriptable Scientific Software",
in Future Generation Computer Systems (FGCS) 19. Elsevier, (2003). p. 599-609. (Note: this is an expanded
version of the ICCS'02 paper submitted by invitation).
- S. Lampoudi and D.M. Beazley, "SWILL: A Simple Embedded Web Server Library",
in USENIX'02 FREENIX Track, Monterey, CA, June 13, 2002. p. 19-27. (Awarded Best Student Paper)
- D.M. Beazley, "An Extensible Compiler for Creating Scriptable Scientific Software",
In ICCS'02, LNCS 2330, P.M.A. Sloot et al. (Eds). Springer-Verlag, 2002. p. 824-833.
- D.M. Beazley, "An Embedded Error Reporting and Debugging Mechanism for Scripting Language Extensions", USENIX Technical Conference, Boston, June 25-30, (2001). p. 147-160.
-
D.M. Beazley, "Scientific Computing with Python", in ASP Conf. Ser.,
Vol. 216, Astronomical Data Analysis Software and Systems IX,
eds. N. Manset, C. Veillet, D. Crabtree (San Francisco:ASP),
49. (2000).
- S.J. Zhou, D.L. Preston, P.S. Lomdahl, D.M. Beazley, "Large-scale Molecular Dynamics
Simulations of Dislocation Intersection in Copper", in Science, Vol 279 (6).(1998). p.1525-1527.
- D.M. Beazley and P.S. Lomdahl, "Controlling the Data Glut in Large-Scale Molecular Dynamics Simulations", Computers in Physics, Vol. 11, No. 3. (1997), p. 230-238.
- D.M. Beazley and P.S. Lomdahl, "Building Flexible Large-Scale Scientific Computing
Applications with Scripting Languages", 8th SIAM Conference on Parallel Processing
for Scientific Computing, March 14-17, Minneapolis, Minnesota. (1997).
- D.M. Beazley and P.S. Lomdahl, " Extensible Message Passing Application Development
and Debugging with Python", Proceedings of IPPS'97, April 1997, Geneva Switzerland.(1997).
IEEE Computer Society. p. 650-655.
- S.J. Zhou, D.M. Beazley, P.S. Lomdahl, A.F. Voter, and B.L. Holian,
"Dislocation Emission From A Three-Dimensional
Crack --- A Large-Scale Molecular Dynamics Study", in
the Ninth International Conference on Fracture, Sydney,
April 1-5, 1997, B.L. Karihaloo et al., eds., Pergamon, p. 3085.
- S.J. Zhou, D.M. Beazley, P.S. Lomdahl, "Large-Scale Molecular Dynamics Simulations
of Three-Dimensional Fracture.", Physical Review Letters 78, No. 3 (1997). p. 479-482.
- S.G. Parker, C.R. Johnson, and D.M. Beazley, "Computational
Steering Software Systems and Strategies," IEEE Computational Science
and Engineering, Vol. 4, No. 4 (1997). p. 50-59.
- P.S. Lomdahl, D.M. Beazley, S.J. Zhou, and B.L. Holian, "Large-Scale Molecular Dynamics on MPPs," In proceedings of Physics Computing '96, Krakow, Poland, September 1996, p. 462-466.
- D.M. Beazley and P.S. Lomdahl, "Lightweight Computational Steering of Very Large Scale
Molecular Dynamics Simulations," Supercomputing'96, November 17-22, Pittsburgh, PA.
IEEE Computer Society (1996).
- D.M. Beazley, "SWIG : An Easy to Use Tool for Integrating Scripting Languages with C
and C++", Proceedings of the 4th USENIX Tcl/Tk Workshop, July 1996, p. 129-139.
- B.L. Holian, S.J. Zhou, P.S. Lomdahl, N. Gronbech-Jensen, D.M. Beazley, and R.Ravelo,
"Molecular-Dynamics Simulations of Fracture : An Overview of System Size and Other
Effects," MRS Symposium Proceedings : Fracture--Instability Dynamics, Scaling, and
Ductile/Brittle Behavior, Vol. 409. Materials Research Society, Pittsburgh (1996).
- S.J. Zhou, D.M. Beazley, P.S. Lomdahl, B.L. Holian, "Large-Scale Molecular Dynamics
Simulations of Fracture and Deformation", Journal of Computer-Aided Materials Design, 3 183 (1996).
- P.S. Lomdahl and D.M. Beazley, "Multi-Million Particle Molecular Dynamics on MPPs,",
Second International Workshop, PARA'95, Lyngby, Denmark, August 1995. In Lecture
Notes in Computer Science, vol 1041. Springer-Verlag. p. 391-407.
- D.M. Beazley and P.S. Lomdahl, "A Practical Approach to Portability and Performance Problems
on Massively Parallel Supercomputers." Proceedings of the Workshop on Debugging and
Tuning for Parallel Computer Systems, Chatham, MA, 1994. IEEE Computer Society (1996).
pg. 337-351.
- D.M. Beazley and P.S. Lomdahl, "Message-Passing Multi-Cell Molecular Dynamics on the
Connection Machine 5," in Parallel Computing 20, 1994. p. 173-195.
- D.M. Beazley, P.S. Lomdahl, P. Tamayo, and N.G. Jensen, "A High Performance Communications
and Memory Caching Scheme for Molecular Dynamics on the CM-5." Proceedings of 8th
International Parallel Processing Symposium, IEEE Computer Society (1994), p. 800-809.
- P.S. Lomdahl, P. Tamayo, N.G. Jensen, and D.M. Beazley, "50 Gflops Molecular Dynamics
on the CM-5." Proceedings of Supercomputing 93, IEEE Computer Society (1993), p. 520-527.
(IEEE Gordon Bell Prize).
- P.S. Lomdahl, D.M. Beazley, P. Tamayo, N.G. Jensen, "Multi-million Particle Molecular
Dynamics on the CM-5," International Journal of Modern Physics C. World Scientific (1993),
p. 1075-1084.
Dissertation
- D.M. Beazley, "A Wrapper Generation Tool for the Creation of Scriptable Scientific Applications,"
University of Utah. August, 1998.
Grants
- NSF CAREER: "Type Systems and Next Generation Tools for Scripting Language Extension Programming", Award Number:0237835. July 2003 (terminated June 30, 2005 when I left academia).
Honors and Awards
- 1998 IEEE Gordon Bell Prize (Runner-up in price-performance category), with Mike Warren, Peter Lomdahl, Timothy Germann.
- 1993 IEEE Gordon Bell Prize (Runner-up in performance category), with Peter Lomdahl, Pablo Tamayo, and Niels Gronbech-Jensen.
Expert Witness
- PRG-Schultz International, Inc. v. Kirix Corp.,(No. 03 C 1867), Northern District of Illinois (2003).
- Touchcom, Inc. v. Gilbarco, Inc. (No. 2:03-cv-00329-TJW), Eastern District of Texas (2005).
- Touchcom, Inc. v. Dresser, Inc. (No. 2:04-cv-00246-TJW), Eastern District of Texas (2006).
- Alcohol Monitoring Systems, Inc. v. Actsoft, Inc. (No. 1:07-cv-02261-WYD-MJW), District of Colorado (2007).
Open Source Software
References
- Available upon reference.