  The anticipated applications of quantum computers span across science and
industry, ranging from quantum chemistry and many-body physics to optimization,
finance, and machine learning. Proposed quantum solutions in these areas
typically combine multiple quantum algorithmic primitives into an overall
quantum algorithm, which must then incorporate the methods of quantum error
correction and fault tolerance to be implemented correctly on quantum hardware.
As such, it can be difficult to assess how much a particular application
benefits from quantum computing, as the various approaches are often sensitive
to intricate technical details about the underlying primitives and their
complexities. Here we present a survey of several potential application areas
of quantum algorithms and their underlying algorithmic primitives, carefully
considering technical caveats and subtleties. We outline the challenges and
opportunities in each area in an "end-to-end" fashion by clearly defining the
problem being solved alongside the input-output model, instantiating all
"oracles," and spelling out all hidden costs. We also compare quantum solutions
against state-of-the-art classical methods and complexity-theoretic limitations
to evaluate possible quantum speedups.
  The survey is written in a modular, wiki-like fashion to facilitate
navigation of the content. Each primitive and application area is discussed in
a standalone section, with its own bibliography of references and embedded
hyperlinks that direct to other relevant sections. This structure mirrors that
of complex quantum algorithms that involve several layers of abstraction, and
it enables rapid evaluation of how end-to-end complexities are impacted when
subroutines are altered.
