Use Case: Compose Custom Training

(See here 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,

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 ⟶ B means that topic B must be explained before topic A (A is said to depend on B).

cluster_python Python cluster_python_basics Basics cluster_python_swdev Software Development python_python_1010_generators_yield Iteration, and Generators: the yield Keyword python_basics_python_0220_for for Loops python_python_1010_generators_yield->python_basics_python_0220_for python_basics_python_0225_range The range Function python_python_1010_generators_yield->python_basics_python_0225_range python_basics_python_0200_sequential_types Sequential Datatypes python_python_1010_generators_yield->python_basics_python_0200_sequential_types python_basics_python_0270_functions Functions python_python_1010_generators_yield->python_basics_python_0270_functions python_basics_python_0193_while while Loops python_basics_python_0220_for->python_basics_python_0193_while python_basics_python_0220_for->python_basics_python_0200_sequential_types python_basics_python_0450_dictionaries More on Dictionaries python_basics_python_0450_dictionaries->python_basics_python_0220_for python_basics_python_0150_datatypes_overview_compound Compound Datatypes python_basics_python_0450_dictionaries->python_basics_python_0150_datatypes_overview_compound python_basics_python_0225_range->python_basics_python_0220_for python_basics_python_0225_range->python_basics_python_0200_sequential_types python_basics_python_0170_if The if Statement python_basics_python_0193_while->python_basics_python_0170_if python_basics_python_0160_boolean Boolean python_basics_python_0193_while->python_basics_python_0160_boolean python_basics_python_0170_if->python_basics_python_0160_boolean python_basics_python_0150_datatypes_overview Datatypes python_basics_python_0200_sequential_types->python_basics_python_0150_datatypes_overview python_basics_python_0160_boolean->python_basics_python_0150_datatypes_overview python_basics_python_0150_datatypes_overview_compound->python_basics_python_0150_datatypes_overview python_basics_python_0120_helloworld Hello World python_basics_python_0110_blahblah Blahblah python_basics_python_0120_helloworld->python_basics_python_0110_blahblah python_basics_python_0140_variables Variables python_basics_python_0150_datatypes_overview->python_basics_python_0140_variables python_basics_python_0130_syntax_etc Syntax etc. python_basics_python_0130_syntax_etc->python_basics_python_0120_helloworld python_basics_python_0140_variables->python_basics_python_0130_syntax_etc python_basics_python_0270_functions->python_basics_python_0150_datatypes_overview python_basics_python_0270_functions->python_basics_python_0140_variables python_swdev_python_1100_exceptions Exception Handling python_swdev_python_1100_exceptions->python_basics_python_0140_variables python_swdev_python_1100_exceptions->python_basics_python_0270_functions python_swdev_python_1050_oo Object Oriented Programming python_swdev_python_1100_exceptions->python_swdev_python_1050_oo python_swdev_python_1050_oo->python_basics_python_0450_dictionaries python_swdev_python_1050_oo->python_basics_python_0270_functions python_swdev_python_1200_modules Modules and Packages python_swdev_python_1200_modules->python_basics_python_0140_variables python_swdev_python_1200_modules->python_basics_python_0270_functions python_swdev_python_1200_modules->python_swdev_python_1050_oo

Based upon this knowledge, a tool can be used to automatically generate an agenda.