Availability of my book Dancing with Python and its table of contents

Cover of book Dancing with Python by Robert S. Sutor
My new book Dancing with Python: Learn Python software development from scratch and get started with quantum computing is now available for purchase from Amazon and Packt Publishing.


Develop skills in Python by implementing exciting algorithms, including mathematical functions, classical searching, data analysis, plotting data, machine learning techniques, and quantum circuits.

Key Features

Learn Python basics to write elegant and efficient code

Create quantum circuits and algorithms using Qiskit and run them on quantum computing hardware and simulators

Delve into Python’s advanced features, including machine learning, analyzing data, and searching


Contributors

About the author
About the reviewer

Contents

List of Figures

Preface

Why did I write this book?
For whom did I write this book?
What does this book cover?
What conventions do I use in this book?
Get in touch

1 Doing the Things That Coders Do

1.1 Data
1.2 Expressions
1.3 Functions
1.4 Libraries
1.5 Collections
1.6 Conditional processing
1.7 Loops
1.8 Exceptions
1.9 Records
10 Contents
1.10 Objects and classes
1.11 Qubits
1.12 Circuits
1.13 Summary

I Getting to Know Python

2 Working with Expressions

2.1 Numbers
2.2 Strings
2.3 Lists
2.4 Variables and assignment
2.5 True and False
2.6 Arithmetic
2.7 String operations
2.8 List operations
2.9 Printing
2.10 Conditionals
2.11 Loops
2.12 Functions
2.13 Summary

3 Collecting Things Together

3.1 The big three
3.2 Lists
3.3 The joy of O(1)
3.4 Tuples
3.5 Comprehensions
3.6 What does “Pythonic” mean?
3.7 Nested comprehensions
3.8 Parallel traverse
3.9 Dictionaries
3.10 Sets
3.11 Summary

4 Stringing You Along

4.1 Single, double, and triple quotes
4.2 Testing for substrings
4.3 Accessing characters
4.4 Creating strings
4.5 Strings and iterations
4.6 Strings and slicing
4.7 String tests
4.8 Splitting and stripping
4.9 Summary

5 Computing and Calculating

5.1 Using Python modules
5.2 Integers
5.3 Floating-point numbers
5.4 Rational numbers
5.5 Complex numbers
5.6 Symbolic computation
5.7 Random numbers
5.8 Quantum randomness
5.9 Summary

6 Defining and Using Functions

6.1 The basic form
6.2 Parameters and arguments
6.3 Naming conventions
6.4 Return values
6.5 Keyword arguments
6.6 Default argument values
6.7 Formatting conventions
6.8 Nested functions
6.9 Variable scope
6.10 Functions are objects
6.11 Anonymous functions
6.12 Recursion
6.13 Summary

7 Organizing Objects into Classes

7.1 Objects
7.2 Classes, methods, and variables
7.3 Object representation
7.4 Magic methods
7.5 Attributes and properties
7.6 Naming conventions and encapsulation
7.7 Commenting Python code
7.8 Documenting Python code
7.9 Enumerations
7.10 More polynomial magic
7.11 Class variables
7.12 Class and static methods
7.13 Inheritance
7.14 Iterators
7.15 Generators
7.16 Objects in collections
7.17 Creating modules
7.18 Summary

8 Working with Files

8.1 Paths and the file system
8.2 Moving around the file system
8.3 Creating and removing directories
8.4 Lists of files and folders
8.5 Names and locations
8.6 Types of files
8.7 Reading and writing files
8.8 Saving and restoring data
8.9 Summary

II Algorithms and Circuits

9 Understanding Gates and Circuits

9.1 The software stack
9.2 Boolean operations and bit logic gates
9.3 Logic circuits
9.4 Simplifying bit expressions
9.5 Universality for bit gates
9.6 Quantum gates and operations
9.7 Quantum circuits
9.8 Universality for quantum gates
9.9 Summary

10 Optimizing and Testing Your Code

10.1 Testing your code
10.2 Timing how long your code takes to run
10.3 Optimizing your code
10.4 Looking for orphan code
10.5 Defining and using decorators
10.6 Summary

11 Searching for the Quantum Improvement

11.1 Classical searching
11.2 Quantum searching via Grover
11.3 Oracles
11.4 Inversion about the mean
11.5 Amplitude amplification
11.6 Searching over two qubits
11.7 Summary

III Advanced Features and Libraries

12 Searching and Changing Text

12.1 Core string search and replace methods
12.2 Regular expressions
12.3 Introduction to Natural Language Processing
12.4 Summary

13 Creating Plots and Charts

13.1 Function plots
13.2 Bar charts
13.3 Histograms
13.4 Pie charts
13.5 Scatter plots
13.6 Moving to three dimensions
13.7 Summary

14 Analyzing Data

14.1 Statistics
14.2 Cats and commas
14.3 pandas DataFrames
14.4 Data cleaning
14.5 Statistics with pandas
14.6 Converting categorical data
14.7 Cats by gender in each locality
14.8 Are all tortoiseshell cats female?
14.9 Cats in trees and circles
14.10 Summary

15 Learning, Briefly

15.1 What is machine learning?
15.2 Cats again
15.3 Feature scaling
15.4 Feature selection and reduction
15.5 Clustering
15.6 Classification
15.7 Linear regression
15.8 Concepts of neural networks
15.9 Quantum machine learning
15.10 Summary

Appendices

A Tools

A.1 The operating system command line
A.2 Installing Python
A.3 Installing Python modules and packages
A.4 Installing a virtual environment
A.5 Installing the Python packages used in this book
A.6 The Python interpreter
A.7 IDLE
A.8 Visual Studio Code
A.9 Jupyter notebooks
A.10 Installing and setting up Qiskit
A.11 The IBM Quantum Composer and Lab
A.12 Linting

B Staying Current

B.1 python.org
B.2 qiskit.org
B.3 Python expert sites
B.4 Asking questions and getting answers

C The Complete UniPoly Class

D The Complete Guitar Class Hierarchy

E Notices

E.1 Photos, images, and diagrams
E.2 Data
E.3 Trademarks
E.4 Python 3 license

F Production Notes

References

Other Books You May Enjoy

Index

Index Formatting Examples
Python function, method, and property index
Python class index
Python module and package index
General index

And the subtitle of Dancing with Python will be …

Almost two weeks ago, I put up a poll on LinkedIn asking for opinions on what should be the subtitle of my next book, Dancing with Python. Here are the poll results:

Poll results on the subtitle of Dancing with Python

The choices were:

  1. Learn to code using traditional and quantum computing techniques
  2. A unified introduction to classical and quantum Python software development
  3. Learn Python software development from scratch and get started with quantum computing

The second option had been my working subtitle for most of the writing of the book. Two weeks ago, the book’s development editor at Packt suggested that the subtitle was too academic and might not appeal to a general audience. After some back and forth, we agreed on the other two choices and I suggested we do a poll.

I’m pleased that the votes were as balanced as they were. As you can see, you all cast 589 votes and there were more than 46,000 views. While my initial choice came in first, we are going with the third choice that had the second highest vote tally:

Dancing with Python
Learn Python software development from scratch and get started with quantum computing

From the comments and other conversations, this subtitle generated the most excitement and even passion, if I may call it that. It’s very descriptive of the book and my intent in writing it, has good keywords, and I think is much less formal for than my original.

Thank you for participating and sharing your opinion! If all goes well, the book should be out in print and eBook forms from Packt by early September.

Poll on the subtitle of my next book, Dancing with Python

Packt will be publishing my next book, Dancing with Python, sometime around early September. From the draft preface:

Once you have the philosophy, syntax, structure, and idioms of the classical programming language understood, you then learn quantum computing on top of that. For example, you could use the Qiskit open-source quantum computing software development kit (SDK) along with Python. [QIS] These mesh together and operate exceptionally well. Thousands of people are already Qiskit coders. If you know Python, this is a great approach.

But what if you are learning to code or have only a small amount of experience? What if I could offer you the chance to learn classical and quantum computing in a unified manner? Would it be useful if I could help you understand the concepts of both so that you don’t see them as different disciplines? That’s what I do in this book.

One of the tricky things about writing a book is coming up with a good subtitle. It should be interesting, help with SEO, and make people want to explore more. Here are three candidate subtitles:

  • Learn to code using traditional and quantum computing techniques
  • A unified introduction to classical and quantum Python software development
  • Learn Python software development from scratch and get started with quantum computing

I would like you to help make the choice by taking this poll on LinkedIn. You can choose from among these options. Please note that if you happen to suggest something in the comments that we like and use, you are implicitly giving us all rights to do so without credit or remuneration. (Sorry for the legalize.)

Please vote!

How to listen to my Packt podcast about quantum computing on your phone

The Packt podcast with me talking about my quantum computing and my book Dancing with Qubits is now available. Here is how you can listen to it on your iPhone. I presume the directions for Android are similar.

Podcasts screenshotOpen the Podcasts app on your phone. Click the magnifying glass and type Packt into the search field. Press Search. Press the packt podcast in the search results.
Podcasts screenshotPress The Packt Podcast under the listing of Shows. The logo is white text that says Packt on an orange background.
Podcasts screenshotUnder Episodes, look for Quantum computing, explained!. You may need to scroll down. It appeared on February 10, 2020.

SoundCloud Packt podcast with me about Dancing with Qubits and #QuantumComputing

Please join Stacy Munro, Richard Gall, and me for a podcast discussion about my new book about quantum computing, Dancing with Qubits.

https://soundcloud.com/packt-podcasts/quantum-computing-explained-ibms-robert-sutor-talks-about-the-new-paradigm-on-the-horizon

#DancingWithQubits: What about the eBook?

Cover of the book Dancing with QubitsYesterday was very exciting because I received my first printed copy of the book. There’s just something about holding a physical, printed book that you’ve labored over for many months. Others are starting to get their copies too, and I hope that within a couple of weeks everyone who pre-ordered the print version will have copies in hand.

What if you ordered the eBook? Wasn’t that an option on Amazon? Why isn’t it listed there now? Why was your Kindle eBook order canceled?

The original plan was to provide the eBook in a PDF-like, print replica format that was in color and had active links within and beyond the book. You can still purchase this eBook at the Packt Publishing website.

As for Amazon, let’s just say that they ultimately wanted a reflowable version of the book rather than a fixed format version. As I’ve mentioned before, this presents many challenges to producing beautiful math. The reflowable format allows you to change the font and font size you use on your Kindle or in the Kindle app. It makes it easier to read on small devices. I understand the value.

Hence, I’m now working to create a reflowable version with one guiding principle: as much as possible, I must have a single source for the book that will produce future versions of the printed, fixed-format PDF, and reflowable formats

Here’s the strategy:

  • Use tools like make4ht to translate the original LaTeX into HTML. Convert the HTML into MOBI and EPUB3 formats with a minimal amount of hand editing.
  • Use standard HTML entities and CSS for as much of the in-sentence math as possible.
  • Avoid using extra fonts within the HTML.
  • Use automatically-generated PNG files for any other math.
  • Use automatically-generated SVG and PNG files for figures coming from LaTeX tikz environments. (This is not working at all right now.)
  • Use new macros for the math to produce either LaTeX or HTML versions.
  • Use a small Python program I wrote to convert simple math to new markup using the new macros.

Screen shot of the VSCode editor

There is much work to do but things are looking promising. I can’t now give you any estimated time of arrival for the Kindle reflowable version or any guarantee that it will arrive eventually, but it’s my strong intention to make it happen. There are unknown unknowns yet to be discovered.

In the meanwhile, as I mentioned above, you can get a PDF-like digital version of the book from Packt.

A final point: despite several people staring at the text, a few errors crept in. These are mostly typos or omitted words. I’m keeping track of these on the corrections and clarifications page for the book. I incorporate these fixes into the text as they are discovered and I hope that future versions of the book, printed and digital, include them.


Previous: What’s in the book

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: What’s in the book

Cover of the book Dancing with Qubits

This morning I awoke to a very nice email from Tom Jacob, the Project Editor for my book at Packt Publishing. He said, in part,

We were able to successfully ship the book to our printers. …
Congratulations on achieving this milestone!

As I’ve mentioned before, my book was prepared using LaTeX and not Microsoft Word. I gave the publishers what was essentially the “camera-ready” PDF file from which to print. Hence the part about being able to “successfully ship” the book. In fact, I sent them the final PDF last night. I thought I was done on Friday, but yesterday I noticed an out-of-place citation in the section on the Bloch sphere and did a quick fix.

Now that the book is in production and there is absolutely nothing else I can do to fiddle with it, I’m going to show you the table of contents. I tried to have fun with some of the chapter and section titles. Once the book is published, I’ll be happy to discuss why I included this content or that.


Dancing with Qubits
How quantum computing works and
how it can change the world

Preface ix

1  Why Quantum Computing? 1

1.1 The mysterious quantum bit 2

1.2 I’m awake! 4

1.3 Why quantum computing is different 7

1.4 Applications to artificial intelligence 9

1.5 Applications to financial services 15

1.6 What about cryptography? 18

1.7 Summary 21

I  Foundations 23

2  They’re Not Old, They’re Classics 25

2.1 What’s inside a computer? 26

2.2 The power of two 32

2.3 True or false? 33

2.4 Logic circuits 36

2.5 Addition, logically 39

2.6 Algorithmically speaking 42

2.7 Growth, exponential and otherwise 42

2.8 How hard can that be? 44

2.9 Summary 55

3  More Numbers than You Can Imagine 57

3.1 Natural numbers 58

3.2 Whole numbers 60

3.3 Integers 62

3.4 Rational numbers 66

3.5 Real numbers 73

3.6 Structure 88

3.7 Modular arithmetic 94

3.8 Doubling down 96

3.9 Complex numbers, algebraically 97

3.10 Summary 103

4  Planes and Circles and Spheres, Oh My 107

4.1 Functions 108

4.2 The real plane 111

4.3 Trigonometry 122

4.4 From Cartesian to polar coordinates 129

4.5 The complex “plane” 129

4.6 Real three dimensions 133

4.7 Summary 134

5  Dimensions 137

5.1 R2 and C1 139

5.2 Vector spaces 144

5.3 Linear maps 146

5.4 Matrices 154

5.5 Matrix algebra 166

5.6 Cartesian products 176

5.7 Length and preserving it 177

5.8 Change of basis 189

5.9 Eigenvectors and eigenvalues 192

5.10 Direct sums 198

5.11 Homomorphisms 200

5.12 Summary 204

6  What Do You Mean “Probably”? 205

6.1 Being discrete 206

6.2 More formally 208

6.3 Wrong again? 209

6.4 Probability and error detection 210

6.5 Randomness 212

6.6 Expectation 215

6.7 Markov and Chebyshev go to the casino 217

6.8 Summary 221

II  Quantum Computing 223

7  One Qubit 225

7.1 Introducing quantum bits 226

7.2 Bras and kets 229

7.3 The complex math and physics of a single qubit 234

7.4 A non-linear projection 241

7.5 The Bloch sphere 248

7.6 Professor Hadamard, meet Professor Pauli 253

7.7 Gates and unitary matrices 265

7.8 Summary 266

8  Two Qubits, Three 269

8.1 Tensor products 270

8.2 Entanglement 275

8.3 Multi-qubit gates 283

8.4 Summary 295

9  Wiring Up the Circuits 297

9.1 So many gates 298

9.2 From gates to circuits 299

9.3 Building blocks and universality 305

9.4 Arithmetic 315

9.5 Welcome to Delphi 322

9.6 Amplitude amplification 324

9.7 Searching 330

9.8 The Deutsch-Jozsa algorithm 338

9.9 Simon’s algorithm 346

9.10 Summary 354

10  From Circuits to Algorithms 357

10.1 Quantum Fourier Transform 358

10.2 Factoring 369

10.3 How hard can that be, again 379

10.4 Phase estimation 382

10.5 Order and period finding 388

10.6 Shor’s algorithm 396

10.7 Summary 397

11  Getting Physical 401

11.1 That’s not logical 402

11.2 What does it take to be a qubit? 403

11.3 Light and photons 406

11.4 Decoherence 415

11.5 Error correction 423

11.6 Quantum Volume 429

11.7 The software stack and access 432

11.8 Simulation 434

11.9 The cat 439

11.10 Summary 441

12  Questions about the Future 445

12.1 Ecosystem and community 446

12.2 Applications and strategy 447

12.3 Access 448

12.4 Software 449

12.5 Hardware 450

12.6 Education 451

12.7 Resources 452

12.8 Summary 453

Afterword 455

Appendices 458

A  Quick Reference 459

A.1 Common kets 459

A.2 Quantum gates and operations 460

B  Symbols 463

B.1 Greek letters 463

B.2 Mathematical notation and operations 464

C  Notices 467

C.1 Creative Commons Attribution 3.0 Unported (CC BY 3.0) 467

C.2 Creative Commons Attribution-NoDerivs 2.0 Generic (CC BY-ND 2.0) 468

C.3 Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) 468

C.4 Los Alamos National Laboratory 469

C.5 Trademarks 469

D  Production Notes 471

Other Books You May Enjoy 473

Index 477


Changes, clarifications, and errata


Previous: Drawing quantum circuits
Next: What about the eBook?

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: Drawing quantum circuits

This entry is for people who use the LaTeX document preparation system, as I did in the book. It’s not a tutorial on LaTeX in general, but shows some techniques for drawing quantum circuits. To be direct, it’s pretty geeky for LaTeX people.

An early decision I had to make was how to draw quantum circuit diagrams in the book. Here’s an example of one:

A quantum circuit

This includes three Hadamard H gates, two S gates, a T gate, and a swap gate. Would I need to write my own drawing routines?

I really didn’t want to do that because of my time constraints but I also hoped that I could find something better. It didn’t take me long to do so: Alastair Kay’s excellent quantikx package on the CTAN Comprehensive TeX Archive Network. The documentation there is very good, but in this blog entry I’m going to show you how to evolve a simple circuit to have stylistic customizations that you might want to modify and use.

Below are five displayed versions of the same circuit. They are numbered on the left side.Five example circuits

The first is the default formatting from quantikz. It is perfectly fine and you can see similarly formatted circuits in research articles about quantum computing.

\begin{center}
    \begin{tikzpicture}
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw       & \gate{H} & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \gate{X}  & \gate{H} & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

The markup \ket{0} produces the |0> at the beginning of each wire, which is a horizontal line. \qw creates a segment of a quantum wire. \gate is the basic command for drawing a labeled gate with a rectangle. \meter is the quantum measurement operator. \ctrl{1} and \targ{} are the two parts of a CNOT two-qubit gate. \ctrl{1} is on the wire for the control qubit and extends a line down one wire. There the line meets the \targ{} (target) qubit and is drawn as a circle around a “+” sign.

In the second example, I’ve changed the font in the H and X gates.

\newcommand*{\gateStyle}[1]{{\textsf{\bfseries #1}}}
\newcommand*{\hGate}{\gateStyle{H}}
\newcommand*{\xGate}{\gateStyle{X}}

\begin{center}
    \begin{tikzpicture}
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \gate{\hGate} & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \gate{\xGate}  & \gate{\hGate} & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

I added three LaTeX macros to encapsulate the new function and make it easier to reuse.

  1. \gatestyle puts its text in a bold sans serif font.
  2. \hGate draws the Hadamard H using \gatestyle.
  3. \xGate draws the X using \gatestyle.

While it is now easier to use \hGate and \xGate for text, it’s still wordy to use them as gates in a circuit. The third example defines two more macros, \circuitH and \circuitX, and shows how to set the background and font colors. For a printed book, you might want to have gates with backgrounds in different shades of gray. Alternatively, you could use the same background color for all the Clifford gates.

\newcommand*{\circuitH}{\gate[style={fill=black},label style=white]{\textnormal{\hGate{}}}}
\newcommand*{\circuitX}{\gate[style={fill=teal},label style=white]{\textnormal{\xGate}}}

\begin{center}
    \begin{tikzpicture}
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

Now let’s set the color for the circle in \targ.

\newcommand*{\circuitTarget}[1]{\targ[style={fill=yellow}]{#1}}

\begin{center}
    \begin{tikzpicture}
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}         & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \circuitTarget{} & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

I think you get the idea. You can also set the background color for \meter, which I leave to you as an exercise. Note that in the April, 2019, version of quantikx, you could not change the color of the line inside the \meter graphic. You need to copy and redefine the macro (or create a new macro) to do that.

Finally, let me explain what that [scale=1.0] is doing after the \node. This allows you to scale the entire drawing and make it larger or smaller. However, it does not change the text size. The fifth example shows the fourth example drawn 20% larger.

\begin{center}
    \begin{tikzpicture}
        \node[scale=1.2] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}         & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \circuitTarget{} & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

Here is the complete LaTeX file I used to generate the examples:

\documentclass[11pt,final]{memoir}
%
\usepackage{tikz}
\usetikzlibrary{quantikz}
%
\begin{document}
\mainmatter

% First circuit

\begin{center}
    \begin{tikzpicture}
        \node at (-5,0) {(1)}; % The number of the circuit - you can ignore
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw       & \gate{H} & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \gate{X}  & \gate{H} & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

% Second circuit

\newcommand*{\gateStyle}[1]{{\textsf{\bfseries #1}}}
\newcommand*{\hGate}{\gateStyle{H}}
\newcommand*{\xGate}{\gateStyle{X}}

\begin{center}
    \begin{tikzpicture}
        \node at (-5,0) {(2)}; % The number of the circuit - you can ignore
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \gate{\hGate} & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \gate{\xGate}  & \gate{\hGate} & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

% Third circuit

\newcommand*{\circuitH}{\gate[style={fill=black},label style=white]{\textnormal{\hGate{}}}}
\newcommand*{\circuitX}{\gate[style={fill=teal},label style=white]{\textnormal{\xGate}}}

\begin{center}
    \begin{tikzpicture}
        \node at (-5,0) {(3)}; % The number of the circuit - you can ignore
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}   & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \targ{}    & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

% Fourth circuit

\newcommand*{\circuitTarget}[1]{\targ[style={fill=yellow}]{#1}}

\begin{center}
    \begin{tikzpicture}
        \node at (-5,0) {(4)}; % The number of the circuit - you can ignore
        \node[scale=1.0] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}         & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \circuitTarget{} & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

% Fifth circuit

\begin{center}
    \begin{tikzpicture}
        \node at (-4.4,0) {(5)}; % The number of the circuit - you can ignore
        \node[scale=1.2] {
            \begin{quantikz}
                \ket{0} & \qw            & \circuitH & \ctrl{1}         & \meter{} & \qw \\
                \ket{0} & \circuitX      & \circuitH & \circuitTarget{} & \meter{} & \qw
            \end{quantikz}
        };
    \end{tikzpicture}
\end{center}

\end{document}

Previous: My five rules for making revisions from editorial comments
Next: What’s in the book

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: My five rules for making revisions from editorial comments

Cover of the book Dancing with QubitsToday I finished making revisions to the book based on comments from the proofreader. All told, there have been five people providing feedback and comments for how I should modify, fix, and improve the content:

  • me
  • the technical reviewer
  • the project editor
  • the development editor
  • the proof reader

My editing started as soon as I started writing, but it has been an iterative process. The technical reviewer made sure what I said was correct, and occasionally caught typos. The project editor, Tom Jacob, focused on the workflow of the overall process and contributed comments about the physical structure of the book and what publisher content should be included.

The development editor, Dr. Ian Hough, has been my constant online companion for the last few months. It is his responsibility to sign off on the final content. He provided suggestions and ideas, and checked that I made good revisions. Sometimes he corrected the revised text when I made mistakes (hey, it was late!). The proofreader did the nitty-gritty editing for punctuation and clarity. Ian filtered those suggestions and passed them along to me. He then checked, again, that I had done the correct revisions.

LaTeX markup showing change bars

Some “suggestions” were really just that. They were optional, but I incorporated almost all of them.

Here are five things I’ve kept in mind or learned through this editing and revision process:

  1. This is not about my ego, it’s about producing the best content.
  2. The mathematics and science must be correct. (I knew this!)
  3. If anyone thinks something is unclear, then I rewrite it.
  4. I need to use many more commas.
  5. It’s important to correctly use the right word in standard pairs such as “that/which” and “already/all ready.”

My bonus rule is to eliminate superfluous words.


Previous: The writing process – what format?
Next: Drawing quantum circuits

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: The writing process – what format?

Cover of the book Dancing with QubitsBefore I discuss what and I how I wrote, let me talk about the markup of the book. By “markup” I mean the underlying format of the content that determines its structure such as the title page, table of contents, parts, chapters, sections, paragraphs, bibliography, and the index, along with font styles and sizes.

In my experience, most publishers, both traditional and online, prefer you to use Microsoft Word to create the book, and it has its own underlying markup language that you typically never see. In a more-or-less what-you-see-is-what-you-get way, you can write and style the book.The publishing workflow is often based on this choice.

My requirements for the book creation process included:

  • beautiful math rendering, both in sentences and displayed multi-part formulas,
  • built-in support for generating diagrams,
  • easy methods to change formatting throughout the book quickly, and
  • good support for working quickly on a large text.

Regarding the size of the book, in early 2019 I thought the book would come in around 300 pages and I would have a complete draft on September 1. I ended up writing a book with slightly more than 500 pages with the first full draft delivered on October 9. I had full drafts of various chapters before then, but that was the first time there were no sections with TODO markers.

ebook on iPadWord has come a long way on many of these requirements, especially the math, though it can be very laborious to create a book with hundreds or thousands of formulas. Here’s the real problem though: eBooks with math in them often look terrible if you put them in a reflowable format. That is, if you let, say, your Amazon Kindle change the fonts and the line widths, the math just doesn’t look right.

People argue about this forever, but there is an excellent chance that you will end up with fuzzy, misaligned expressions that are the wrong size compared to the surrounding text. So, I early on made the decision that the eBook would not be reflowable. Since that was the case, there was no reason for me to stick with Word. I decided to markup the book in LaTeX. Luckily, Andrew Waldron at Packt Publishing agreed. [Though see this later development regarding the eBook.]

With LaTeX, you have complete and arbitrary control over all parts of the formatting. There are thousands of packages that make your life easier by providing significant functionality that you would not want to write yourself.

LaTeX has

  • the best math formatting facilities of any system,
  • packages like pgf/tikz for creating diagrams,
  • a full macro programming language for formatting control and calculations, and
  • easy ways to break a document into sections so you can work on one part at a time.

If you get into macro programming, things can get complicated. I’ve been doing it for 30 years, so it doesn’t faze me. Here are two good books on LaTeX to get you started:


Previous: Last minute tweaks to my quantum computing book cover
Next: My five rules for making revisions from editorial comments

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: Last minute tweaks to my quantum computing book cover

With a month to go before publication, we are still making last minute tweaks to my quantum computing book Dancing with Qubits. We made two changes to the cover this week. Can you spot the differences?

The old version is the first image, the new version is the second:
old book cover Cover of the book Dancing with Qubits
How do you interpret the change made in the subtitle?


Previous: Let me preface my remarks with …
Next: The writing process – what format?

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.

#DancingWithQubits: Let me preface my remarks with …

Cover of the book Dancing with QubitsWay back in 1992, Springer-Verlag published my first book Axiom: The Scientific Computation System, co-authored with the late Richard D. Jenks. Since then I’ve thought of writing other books, but work and life in general caused enough inertia that I never got around to it.

I first got involved with IBM’s quantum computing effort in early 2016. By 2018, I was again thinking of writing a book and this subject was an obvious candidate. How would I start? What would I say? What was my perspective on the topic given that there were already some excellent books?

To write a book, you have to start writing. This is obvious, but no less true and important. In the summer of 2018, I started writing what I thought would be the introduction to the book. My perspective was, and is, very much from the mathematical and computer science directions. To be clear, I am not a physicist. If I could produce a coherent introduction to what I thought the book would cover, I might convince myself that it would be worth the hundreds of hours it would take to complete the project.

When I recently announced that the book was available for pre-order, my industry colleague Jason Bloomberg asked:

“So where does it fall on the spectrum between ‘totally accurate yet completely impenetrable’ and ‘approachable by normal humans but a complete whitewash’?”

I responded:

“I bring you along … to give you the underlying science of quantum computing so you can then read the “totally accurate but formally impenetrable” texts.”

I decided that I would cover the basic math necessary to understand quantum computing, and then get into quantum bits (qubits), gates, circuits, and algorithms. Although readers with the necessary background (or perhaps a good memory of that background) can skip the mathematical fundamentals, I decided to take people through the algebra and geometry of complex numbers, linear algebra, and probability necessary to understand what qubits are and what you can do with them.

That early draft of the book’s introduction described roughly 15 chapters divided into three parts. The final book has 12 chapters and 2 parts. That introduction eventually became the Preface. Part III eventually became Chapter 1.

It’s much tighter than what I imagined it would be, but there is still material I could have covered. There’s a natural tendency to want to add more and more, but I kept asking myself “What is this book about? How deeply do I want to go? Am I getting off track? Will I ever finish?”.

As 2018 went on, I kept tweaking the introduction and I started talking to publishers. In November, I started writing what was then the first chapter. Although I started in Microsoft Word, which is overwhelmingly the format of choice for many publishers, I quickly switched to LaTeX. This produced a far more beautiful book, but also placed constraints on how I could publish the book.

With this as teaser, in future entries I’ll talk more about the writing process, choices I made, LaTeX packages I used and macros I wrote, deciding how to publish the book, and working with editors. Once the book is available, I’ll talk about the specific content and why I included what I did.


Next: Last minute tweaks to my quantum computing book cover

In December, 2019, Packt Publishing published my book Dancing with Qubits: How quantum computing works and how it can change the world. Through a series of blog entries, I talk about the writing and publishing process, and then about the content.
Verified by MonsterInsights