1. A method for creating training system for improving user knowledge and skills in a given course, said method comprising the steps of: i) Analyzing and mapping the course requirements for evaluating the required knowledge and skills according to mapped subjects and defining possible failure causes, wherein each failure cause represents knowledge or skill weakness relating a certain subject or general weakness; ii) Defining knowledge/skills target level as function of the number of user's correct/wrong answers in each subject; iii) Preparing a pool of questions, wherein each question is related to at least one subject knowledge/skill and/or failure cause; iv) Preparing a set of answers for each question, comprising at least one correct answer and at least one wrong answer, wherein each wrong answer is related to a specific sub-subject/subject and/or to one or more failure cause; v) Defining an evaluation module for assessing user knowledge/skills level based on users success in giving correct answers in comparison to predefined target levels and type of failure causes related to the user's wrong answers; vi) Defining exercise module for selecting sequence of questions out of the predefined set of questions based on evaluations of user knowledge/skills level and detected failure causes;