1. An apparatus comprising: a memory comprising a learning database and a user database; the learning database comprising a set of details to be learned; and the user database comprising a user profile, wherein: the user profile comprises a weighing vector of weighing parameters, each weighing parameter from the weighing vector corresponding to a detail in the set of details; and the apparatus further comprises a processor configured to test a user during a testing process on a given detail from the set of details, wherein one or more details are tested in an order that is at least partly based on the weighing parameters; wherein the processor is further configured: to adjust, after each test on a given detail, a weighing parameter corresponding to the given detail depending on whether the user has passed the test of the given detail; to select the given detail from one or more defined subsets of the set of details based on the weighing parameter, wherein each defined subset corresponds to a different predetermined range of weighing parameters; and to shift, when learning of the user progresses, the given detail from one defined subset to another defined subset based on the adjustment of the weighing parameter; and wherein the selecting of the given detail and the shifting of the given detail from one defined subset to another defined subset are performed by processing the user profile without changing the learning database.