QL detective tutorials
======================

.. toctree::
   :glob:
   :hidden:

   ./*

Welcome to the detective tutorials! These are aimed at complete beginners who would like to learn the basics of QL,
before analyzing code with CodeQL.
The tutorials teach you how to write queries and introduce you to key logic concepts along the way.

We recommend you first read the :doc:`Introduction to QL <../introduction-to-ql>` page for a description of the language and
some simple examples.

Currently the following detective tutorials are available:

-  :doc:`Find the thief <find-thief-1>` - a three part mystery that introduces logical connectives, quantifiers, and aggregates
-  :doc:`Catch the fire starter <fire-1>` - an intriguing search that introduces predicates and classes
-  :doc:`Crown the rightful heir <heir>` - a detective puzzle that introduces recursion

Further resources
-----------------

-  For a summary of available learning resources, see :doc:`Learning CodeQL <../../index>`.
-  For an overview of the important concepts in QL, see the `QL language handbook <https://help.semmle.com/QL/ql-handbook/index.html>`__.
