
Core Development Guide
=======================

The documentation of the core components of Theano is still a work in
progress. For now this is a list of bits and pieces on the subject,
some of them might be outdated though:


* :ref:`theano_type` -- Tutorial for writing a new type in Theano. It
  introduces the basics concerning Theano datatypes.

* :ref:`theano_ctype` -- Tutorial on how to make your type C-friendly.

* :ref:`views_and_inplace` -- This is somewhere between extending Theano and
  describing how Theano works internally; it talks about views and inplace
  operations.

* :ref:`optimization` -- Tutorial on how optimization work in Theano.

* :ref:`pipeline` -- Describes the steps of compiling a Theano Function.

* :ref:`graphstructure` -- Describes the symbolic graphs generated by
  :mod:`theano.scan`.

* :ref:`unittest` -- Tutorial on how to use unittest in testing Theano.

* :ref:`sandbox_broadcasting` -- Short description of what a broadcastable
  pattern is.

* :ref:`sandbox_debugging_step_mode` -- How to step through the execution of
  a Theano function and print the inputs and outputs of each op.

* :ref:`sandbox_elemwise` -- Description of element wise operations.

* :ref:`sandbox_maxgotcha` -- Describes the difference between ``numpy.max``
  and Python max (something to consider when using max).

* :ref:`sandbox_randnb` -- Description of how Theano deals with random
  numbers.

* :ref:`sparse` -- Description of the ``sparse`` type in Theano.

