.. include:: Use Case: Compose Custom Training ================================= (See :doc:`here <../plan/basics/agenda>` for the task description) Initial Customer Requirements ----------------------------- A company is interested in a Python training. During an initial phone call it becomes clear that they are interested in the following topics, * :doc:`/trainings/material/soup/python/python_1010_generators_yield/topic` * :doc:`/trainings/material/soup/python/python_1050_oo/topic` * :doc:`/trainings/material/soup/python/python_1100_exceptions/topic` * :doc:`/trainings/material/soup/python/python_1200_modules/topic` I promise them to come up with an agenda for the training. Agenda Preparation ------------------ These four topics cannot be explained as they are, standing alone. Rather, each topic has it own set of *prerequisite topics* that must be explained *before* reaching the final topic. Those prerequisite topics in turn have their own prerequisites. Agenda preparation means to come up with a sequence of topics that will be covered in the training. This is usually done manually. The task is *error prone* and *time consuming*, which means that it is usually also done half-heartedly - *bad work*. Topics, together with their prerequisites, form an entire network of topics. The *topic system*, at the heart of the project, formalizes this information and makes it available to a number of tools. Here you can see the structure of the hypothetical training that we defined above. An arrow A |longrightarrow| B means that topic B must be explained before topic A (A is said to *depend* on B). .. jf-topicgraph:: :entries: python.python_1010_generators_yield, python.swdev.python_1050_oo, python.swdev.python_1100_exceptions, python.swdev.python_1200_modules Based upon this knowledge, a tool can be used to *automatically* generate an agenda. * :doc:`/trainings/material/soup/python/python_0140_variables/topic` * :doc:`/trainings/material/soup/python/python_0150_datatypes_overview/topic` * :doc:`/trainings/material/soup/python/python_0150_datatypes_overview_compound/topic` * :doc:`/trainings/material/soup/python/python_0200_sequential_types/topic` * :doc:`/trainings/material/soup/python/python_0220_for/topic` * :doc:`/trainings/material/soup/python/python_0270_functions/topic` * :doc:`/trainings/material/soup/python/python_0450_dictionaries/topic` * :doc:`/trainings/material/soup/python/python_1050_oo/topic` * :doc:`/trainings/material/soup/python/python_1100_exceptions/topic` * :doc:`/trainings/material/soup/python/python_0225_range/topic` * :doc:`/trainings/material/soup/python/python_1010_generators_yield/topic` * :doc:`/trainings/material/soup/python/python_1200_modules/topic`