% vim: ft=tex
\chapter{Introduction}

Quantum computing has been a rapidly growing field over the last years with
many companies and institutions working on building and using quantum computers
\cite{ibmq}\cite{intelqc}\cite{microsoftqc}\cite{dwavesys}.
One important topic in this research is quantum error correction
\cite{nielsen_chuang_2010}\cite{gottesman2009}\cite{gottesman1997}\cite{shor1995}
that will allow the execution of arbitrarily long quantum circuits \cite{nielsen_chuang_2010}. 
A notable class of quantum error correction strategies are stabilizer codes
\cite{gottesman2009}\cite{gottesman1997} that can be simulated exponentially
faster than general quantum circuits
\cite{gottesman_aaronson2008}\cite{CHP}\cite{andersbriegel2005}.

Being able to simulate large stabilizer states is particularly interesting for 
exploring quantum error correction strategies as fault tolerant quantum computing
requires several layers of encoding - so called concatenated codes \cite{nielsen_chuang_2010} -
that use many physical qbits organized in several layers to encode one logical qbit. 

One particularly efficient way to simulate stabilizer states is the graphical
representation \cite{andersbriegel2005} that has been studied extensively in
the context of both quantum error correction and quantum information theory
\cite{schlingenmann2001}\cite{dahlberg_ea2019}\cite{vandennest_ea2004}\cite{hein_eisert_briegel2008}.
This paper describes the development of a quantum computing simulator 
using both the usual dense state vector representation for a general state
and a graphical representation for stabilizer states. After giving an introduction
to quantum computing, some basic properties of stabilizer states and their
dynamics are elucidated. Using this the graphical representation is introduced
and notable operations on the graphical states are explained. Following is
a chapter describing the implementation of these techniques and some performance
analysis.
