Patent Publication Number: US-10777090-B2

Title: Personalized training materials using a heuristic approach

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The present application claims priority from U.S. Provisional Patent Application No. 62/146,077, filed on Apr. 10, 2015, under 35 U.S.C. 119(e), the contents thereof are incorporated herein by reference, for all purposes to the extent that such subject matter is not inconsistent herewith. 
    
    
     FIELD OF THE INVENTION 
     Embodiments of the present invention relates generally to the field of learning management systems. More particularly, embodiments of the invention relate to generating customized training materials for a student using a heuristic approach. 
     BACKGROUND OF THE INVENTION 
     A learning management system (LMS) is a software application for the administration, documentation, tracking, reporting and delivery of electronic educational technology (also called e-learning) education courses or training programs. LMSs&#39; range from systems for managing training and educational records to software for distributing online or blended/hybrid college courses over the Internet with features for online collaboration. Colleges and universities use LMSs&#39; to deliver online courses and augment on-campus courses. Corporate training departments use LMSs&#39; to deliver online training, as well as to automate record-keeping and employee registration. 
     However, current LMSs&#39; operate using a fixed structure and provide static content to the individual, that is, the content of each LMS is the same regardless of the student&#39;s capacity to understand the material. Thus, what is needed is an LMS that provides customized training materials based on an analysis of the student&#39;s understanding of course. 
     SUMMARY 
     The invention generally relates analyzing student behavior and generating customized individual training materials in an LMS. The embodiments disclosed implement a learning management system to heuristically analyze behavior of a user and customizing individualized training materials have been disclosed. In one embodiment, the user is presented at least one educational course structured into at least one knowledge domain. Upon receiving a selection from the user, the system displays at least one lesson associated with at least one knowledge domain. A lesson includes subject matter related to at least one category associated with the at least one knowledge domain. The user can then elect to take a quiz having at least one question related to at least one category. As the user answers the question, metrics related to user&#39;s behavior, including time taken to respond to the question, the answer chosen, or other metrics, etc. are calculated and a value related to the user&#39;s understanding of the subject matter is determined and tracked. The tracked value can then be compared to a determined threshold value associated with at least one category. Once it has been determined that the tracked value has reached or passed (e.g., exceeded) the threshold value, the quiz is terminated (or temporarily terminated), and the system can heuristically determine a level of detailed or supplemental lessons that need to be displayed to the user. A higher level signifies a more detailed training material is displayed to the user. In another embodiment, a short quiz is presented to the user upon successfully studying, or while studying the detailed/supplemental training material. Once the user answers the short quiz correctly, the user is given an opportunity to continue with the quiz from where it was terminated. 
     These and other features, aspects, and advantages of the disclosure are described in more detail below in the detailed description and in conjunction with the following figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements. 
         FIG. 1  illustrates a block diagram of a system architecture of an LMS, according to one embodiment of the present invention. 
         FIG. 2  illustrates a block diagram of a logical layout of a course in the LMS, according to one embodiment of the present invention. 
         FIG. 3  illustrates a diagram of an e-learning system displaying educational courses according to an embodiment of the present invention. 
         FIG. 4  illustrates a diagram describing knowledge domains associated with an educational course according to an embodiment of the present invention. 
         FIG. 5  illustrates a diagram of an educational course material associated with one or more categories of subject matter according to an embodiment of the present invention. 
         FIG. 6  illustrates a diagram of a quiz question associated with at least one category, according to an embodiment of the present invention. 
         FIG. 7  illustrates a diagram of a heuristically determined detailed training material associated with at least one category related to a quiz question, according to an embodiment of the present invention. 
         FIG. 8  illustrates a flowchart describing the process flow of a system that can heuristically analyze student behavior and tailor individualized training materials, to an embodiment of the present invention. 
         FIG. 9  illustrates a flowchart describing the process flow of a server, according to an embodiment of the present invention. 
         FIG. 10  illustrates a flowchart describing the process flow of a client machine, according to an embodiment of the present invention. 
         FIG. 11  describes a block diagram illustrating an exemplary network environment as implemented according to an embodiment of the present invention. 
         FIG. 12  describes a block diagram illustrating a data processing system such as a computing system which may be used with one embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     Various embodiments and aspects of the inventions will be described with reference to details discussed below, and the accompanying drawings will illustrate the various embodiments. The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of various embodiments of the present invention. However, in certain instances, well-known or conventional details are not described in order to provide a concise discussion of embodiments of the present inventions. 
     Reference in the specification to “one embodiment” or “an embodiment” or “another embodiment” means that a particular feature, structure, or characteristic described in conjunction with the embodiment can be included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment. The processes depicted in the figures that follow are performed by processing logic that comprises hardware (e.g., circuitry, dedicated logic, etc.), software, or a combination of both. Although the processes are described below in terms of some sequential operations, it should be appreciated that some of the operations described can be performed in a different order. Moreover, some operations can be performed in parallel rather than sequentially. 
     Using various embodiments, methods, systems and computer readable medium are disclosed to implement a learning management system that can heuristically analyze behavior of a user and customizing individualized training materials to display at least one educational course structured into at least one knowledge domain. In one embodiment, responsive to a user selection, the system can display at least one course content associated with a knowledge domain, also referred to as course module herein. Each course module/knowledge domain includes at least one lesson related to the knowledge domain. A lesson, as described herein, includes at least one category topic and associated subject matter (content) related to the module/knowledge domain. After the lesson is displayed to the user, responsive to the user&#39;s indication to take a quiz, the system can display at least one question related to the category or categories. The system can then determine a metric value related to user behavior or user answer selection, and calculate a tracked value using the metric value, where the tracked value signifies the understanding of the subject matter by user. The system can also determine a threshold value associated with the subject matter category, and if it is determined that the tracked value has reached or surpassed the threshold value, the system can heuristically determine a level of detailed lessons to be displayed to the user. In cases where the tracked value is an increasing value, surpassing the threshold signifies that the tracked value has increased above the threshold value. Similarly, in cases where the tracked value is a decreasing value, surpassing the threshold value signifies that the tracked value has decrease below the threshold value. 
     In one embodiment, a higher level of detailed lessons signifies a more detailed training material. In another embodiment, the system can also be configured to display a short quiz after displaying the determined level of detailed lessons to the user, to enhance the likelihood of understanding the category/categories of subject matter by the user/student. Thereafter, if the response to the short quiz is correct, the user is presented an opportunity to return back to the main quiz, in one embodiment. The system can also let the user resume the quiz from where it was terminated, in another embodiment. 
     Although the embodiments described herein related to exemplary embodiments described in the figures, it should be noted that the structures and concepts described herein can be applied to any course that involves substantial material and requires testing a user&#39;s skill or understanding of the material. 
       FIG. 1  illustrates a block diagram of a system architecture of an LMS, according to one embodiment of the present invention. As illustrated system  100 , in one embodiment, can have user interface  102 , content display subsystem  104 , database  106 , user feedback/response tracking subsystem  108 , and Analysis and Decision (A/D) subsystem  110 . Database  106  provides course content, modules, questions, threshold values and/or associated metrics for each question. Content display subsystem  104  retrieves the information from database  106  and displays it to the user via interface  102 . Content display subsystem  104  receives course material  106 B and an associated quiz(es)  106 A from database  106 . When the user interacts with system  100 , user feedback/response tracking subsystem  108  tracks the user&#39;s responses to questions and/or content and provides the data to AD subsystem  110 . In one embodiment, user feedback/response tracking subsystem can track any of user mouse click/finger tap, location of click/tap, selected response, time take taken to provide the response/click/tap, etc. Thereafter, A/D subsystem  110  processes the information received by user feedback/response tracking subsystem  108 , and along with metrics  106 C received from database  106 , analyzes the user response and determines the content that should be transmitted to the user by content display subsystem  104 . A/D subsystem  110  can, in one embodiment, based on the received metrics  106 C and data from user feedback/response tracking subsystem  108 , instruct content display subsystem  104  to fetch an appropriate detailed course material  106 B and/or quiz  106 A from database  106 , as further discussed herein. 
     A/D subsystem  110  is responsible for analyzing user responses and deciding what level of course detail should be presented to the user, based on the user&#39;s response and/or feedback to a given course material or quiz. A/D subsystem  110  determines whether additional help related to a course needs to be transmitted to the user. In one embodiment, A/D subsystem  110  determines the appropriate course level and/or quiz based on a tracked value determined based on the data received from user feedback/response tracking subsystem  108 . A threshold value is determined based on the metrics received related to each question, quiz, or course material, and if the tracked value increases (or decreases) the threshold value, then A/D subsystem determines options to present to the user to offer further guidance to the user, as described herein. A/D subsystem also determines the level of detail related to a course that needs to be displayed to the user, incase the user requests help from system  100 . For example, if user feedback/response tracking subsystem  108 , in one embodiment, determines that the user has requested help regarding a certain course material, question, and/or quiz, A/D subsystem  110  can heuristically assess the user&#39;s understanding towards the given material and determine the level of detail that needs to be provided to the user (based on the user&#39;s tracked value related to the course material, question, and/or quiz). Once the level of detail of course content has been determined, A/D subsystem  110  instructs content display subsystem  104  to display the determined course content, quiz, or question. Content display subsystem  106  retrieves the information from database  106  accordingly. 
       FIG. 2  illustrates a block diagram  200  of a logical layout of a knowledge domain in the LMS, according to one embodiment of the present invention. As illustrated, LMS  201 , in one embodiment can comprise at least one course  212 . Each course  212  can include at least one module  214  (also referred to as knowledge domain or topic herein). Each module can include at least one lesson content  216  and a related question set (quiz)  218 . Each lesson content includes at least one category and associated subject matter detail to test the user&#39;s understanding of lesson content  216 . Content  216 , in one embodiment, can be represented by different detailed lesson levels. In one embodiment, a higher detailed level signifies a more detailed lesson related to the topic. For example, detail level (1)  220  can signify general subject matter of a category, detailed level (2)  222  can signify a detailed version of the subject matter, and detailed level (n)  224  can signify the most elaborated version of the content, where n is a natural number associated with the most detailed level of the course. Each course detail level can be associated with a range of time, as indicated by  234 ,  236 , and  238  for course level (1)  220 , detail level (2)  222  and detail level (n)  224 , respectively. Time allowed  234 ,  236 , and  238  indicate the range of time that should be taken to comprehend the course content associated with each detail level. Further, each detail level can be associated a threshold value as identified by reference numbers  227 ,  229 , and  231 . Threshold values  227 ,  229 , and  231 , in one embodiment, indicate the level of comprehension of the associated detailed level of course material, and can be defined as a function of time taken to process the course subject matter divided by the difficulty level  225 , as discussed further herein. Therefore, threshold values  227 ,  229 , and  231 , in one embodiment are set by the course creator, and are based on the average times it is expected a user to compete the course content. If the user&#39;s comprehension value (time taken by the user divided by difficulty level  225 ) is determined to surpass the threshold value for the detail level, then the system can suggest remedial measures to the user, as discussed further herein. Each associated question set/quiz  218  includes at least one question  226  associated with the content  216 . Each question  226  is associated with a metric determined by time allowed (e.g., count down timer)  228  to answer the question, threshold value  230 , which, in one embodiment, indicates the time assumed an average student may take to answer the question (set by the course creator), and threshold potential difficulty  233  for the question set, indicating a value which when exceeded, instructs the system in initial remedial measures (e.g., option to study supplemental content (e.g., detail levels ( 2 ) through (n)), and the user&#39;s cumulative potential difficulty  232  for question set  218 , as discussed further herein. In one embodiment, a question can be associated with the main quiz related to a content  216 , or a short quiz that is presented to the user after displaying supplemental content. 
       FIG. 3  illustrates a diagram  300  of an e-learning system displaying educational courses according to an embodiment of the present invention. As illustrated a user, once logged in to the LMS  210 , is provided an option to select an educational course  212 . In an exemplary embodiment, four titles shown are the “courses” being offered to the user/client. According to an embodiment, each course can comprise structured information related to one or more knowledge domains/modules/topics. Throughout this disclosure, knowledge domains, modules, topics have been used interchangeably. A module can have at least one lesson content; the lesson content including at least one category and related of the subject matter of the module/knowledge domain. The course materials modules are created by domain experts and can comprise information that structures the course material into one or more targeted lessons to address a specific section of a knowledge domain. Each lesson can further comprise information related to one or more categories, as discussed further herein. 
       FIG. 4  illustrates a diagram  400  describing knowledge domains/modules associated with an educational course according to an embodiment of the present invention. In one embodiment, system  100  offers the user to select an educational course  212 , as illustrated by  401 . There after, a user selects an educational course one or more topics/knowledge domains  214  are displayed. In one embodiment, the titles displayed on user interface  102  are the topics covered in a specific educational course. As illustrated, in one embodiment, when the user selects ‘Educational Course 1’, four knowledge domains (topics)  214  can be displayed to the user. Once the user selects a knowledge domain  214  system  100  using the techniques described herein selects lessons/training materials related to the knowledge domain and displays the material to the user. 
       FIG. 5  illustrates diagram  500  of an educational course material associated with one or more categories of subject matter of according to an embodiment of the present invention. In one embodiment, the training material associated with a given topic is displayed, as indicated by label  502 . For a given topic/knowledge domain  214 , a series of lessons/training material  504  are displayed. Each lesson content  216  includes at least one category and associated subject matter details, and can include one or more pages of expository textual, graphic, or video materials explaining the subject matter associated with at least one knowledge domain being studied. Associated with each topic/module, system  100  maintains a set of competency values in database  106 . These competency values form the data of metrics  106 C. In one embodiment, after viewing/studying the expository material, the student/user/client can be presented with a series of questions relating to the subject matter associated with the selected topic(s) or knowledge domain(s). In another embodiment, each lesson can be internally identified to cover one or more categories associated with the knowledge domain. 
     Comprehension Metrics 
     In one embodiment, determining the flow of the training material, using a heuristic approach, is based on a number of static data in an attempt to determine appropriate next steps that are needed to analyze the behavior of the user. Associated with each page of information, lesson content  216 , system  100  maintains a set of competency values that are used by A/D subsystem  110  in determining user comprehension of the associated subject matter. 
     A module  214 , can have category of information, e.g. Legal, Financial, Regulatory, etc., associated with each lesson content  216 . The system maintains a computed value for each category as further discussed herein. During the display and reading phase of the process, user feedback response tracking subsystem  108  tracks the time taken by the trainee moving through the information in that module. In one embodiment, Time Allowed  234 ,  236 , or  238  are countdown timers, and if a user does not complete the course within the specified time, A/D subsystem  110 , suggests remedial actions, as discussed herein. Based on empirical data derived from live seminars given for the same material, system  100  is provided with the average time a student takes to comprehend the data. In one embodiment threshold values (e.g.,  227 ,  229 ,  231 , etc.) can be predetermined by the course creator and can be calculated by:
 
 T ( d ) =T   d (avg)/ D  
 
     where T(d) represents the threshold value  227 , threshold value  229 , threshold value  231 , etc., for each course detail level (d). T d  (avg) represents the average expected time for a user to complete the course with course detail level d, and D represents content difficulty level  225  (as set by the course creator). Time Allowed  234 , Time Allowed  236 , or Time Allowed  238 , in one embodiment, are maximum time values beyond which the system will assume that the student is having difficulty with comprehension. 
     The user&#39;s comprehension value can then be tracked based on the time take by the user to comprehend the material presented to the user divided by the difficulty level of the material  225 . Therefore, in one embodiment, a user&#39;s comprehension value of the subject matter, U(c), can be represented by:
 
 U ( c )= T   d ( u )/ D  
 
     where T d (u) represents the time take by the user to read the material provided, with course level d. 
     Time values, in one embodiment, can be computed based on the clock time that elapses between the display of material and the next user action indicating completion of that material (normally by selecting “next”). If a user&#39;s comprehension value surpasses a threshold value (e.g.,  227 ), or a time allowed counter (e.g., Time Allowed  234 ) expires, then A/D subsystem  110  can determine that the user can be having difficulty in comprehending the course material, and can instruct content display subsystem  104  to present remedial measures, that is, present the user with an option offering the next detailed level (e.g., detailed level (2)  222 ) that has been written to enhance the basic information presented in the lesson content. In one embodiment, if no response is received within a predetermined time period of offering the user remedial measures, A/D subsystem  110  assumes that the user has left the application unattended and is logged out of the system. 
     In one embodiment, lesson content  216  can be divided in multiple web-pages (or screens) and each page/screen can be assigned an independent allowed time (e.g., time allowed  234 ), and threshold score (e.g.,  227 ). Thus, in such a case the user&#39;s comprehension value can be calculated as the cumulative score of the time taken by the user for all the pages/screens in lesson content  216  divided by difficulty of content  225 . In such an embodiment, the user&#39;s subject matter comprehension value is calculated at the completion of lesson content  216 , and can be described as: 
               U   ⁡     (   c   )       =         ∑   1   p     ⁢           ⁢       T   d     ⁡     (   u   )         D                 where   ⁢           ⁢       ∑   1   p     ⁢           ⁢       T   d     ⁡     (   u   )               
represents the summation of the time taken by user u, to comprehend the material presented in p pages/screens for d level of lesson detail level, and D represents the content difficulty level.
 
     In one embodiment, once the user&#39;s comprehension value exceeds the threshold value, the user is given the option to either take associated quiz  218 , or receive supplemental information related to the topic at a greater level of detail (e.g., detail level (2)  222 ). 
     In one embodiment, the quiz can be initiated by the user by selecting the ‘Take Quiz’ button  506 . By initiating the quiz when the user selects the ‘Take Quiz’ button  506 , the user&#39;s response timing used to calculate metric(s) to determine the user&#39;s understanding of the subject matter associated with the selected topic(s) can be accurately recorded. A quiz can include at least one question related to at least one knowledge domain. 
       FIG. 6  illustrates a diagram  600  of a quiz question associated with at least one category, according to an embodiment of the present invention. As illustrated, in one embodiment, a question is presented on an individual page/screen, with multiple choice answers to that question. In one embodiment, once the student/user/client elects to ‘Take Quiz’  506  the question phase is entered. In another embodiment, once the user indicates their desire to take the quiz, timer  604  is initiated. Timer  604 , in one embodiment, can calculate the time taken by the user in providing a response to a given question. The response time, among other factors, can be used to calculate metric(s) based on which the system can analyze student behavior and heuristically tailor individualized/personalized, one to one, training materials, as further described herein. In one embodiment, the training materials are heuristically customized for a user after the user gets the first set of questions incorrect. 
     In order to ensure that the response timings for each question that are used to calculate a given set of metric(s) are valid, entering the question area requires an overt act, specifically selecting the ‘Take Quiz’  506  button, so that timer  604  does not start until the user is ready. In one embodiment, each question  226  of quiz  218  can also be internally identified with a category of knowledge that can be used while calculating the metric(s) for determining the topic area where individualized (or personalized) additional assistance may be required. 
     In one embodiment, the timer(s) associated with a question or quiz start once the full text of the possible answers is displayed so that no penalty is associated with network latency. Thereafter, the student selects one of the answers presented as choices 610. The user can see points  606  associated with the quiz to indicate the user&#39;s current score (reflecting on the user&#39;s passing or failing the quiz). In one embodiment, the system records for each action the number of milliseconds that elapsed, as well as whether the question was answered correctly. Each question category, in one embodiment, tracks a value for ‘lack of understanding of category.’ If an incorrect answer is selected a numerical value is added to the tracking value for the category. In a given knowledge domain, there can be at least one (preferably multiple) question-answer sets for each category (e.g., five or six questions relating to each category). Having multiple questions for a category ensures that the system accurately determines the user&#39;s understanding of the subject matter associated with at least one knowledge domain/topic. One the user clicks/taps next  612 , the associated threshold values and user response time are considered to calculate the desired metrics, as further discussed herein. 
     In one embodiment, the answers, related timings, and other metrics (if any), are stored and maintained in a database. These values/metrics can be used to heuristically determine the level of detailed training material/lesson that needs to be generated for the user, for a given category where the system determines a lack of adequate understanding of the subject matter. 
     After each answer is provided by the user a result can be computed and the category values can be adjusted accordingly (depending on whether the user provided a correct or incorrect response, the time taken to provide the response, etc.). Thus, in such a manner, the system can determine whether for a given subject matter the student/user has passed (e.g., above the threshold if the tracking value is increasing, and below the threshold value if the tracking value is decreasing) indicating that the student/user is having difficulties understanding that concept. 
     Testing Metrics 
     In one embodiment, once a quiz is initiated (e.g., by clicking button  506 ), a user interface displays a set of questions to a user. In one embodiment, only one question is displayed per screen, and the next question is displayed after the user clicks or taps on the next button. A quiz can have a plurality of questions. In one embodiment, the questions are in a multiple-choice format where the correct answer is presented along with incorrect answers. For each question a count-down timer (T 1 ) that starts at a number determined by the content creator in which it is presumed the question can be reasonably answered correctly. In one embodiment, this value is saved as Time Allowed  228 . In addition, another timer, also set by the course creator, is associated with a question that represents the time it is determined for an average user to provide the correct answer (T 2 ). In one embodiment, this value can be saved as question threshold  230 . In one embodiment, each question set  218  can have a threshold difficulty value  233  represents a value, which when surpassed, indicates A/D subsystem  110  that the user may have difficulty with subject matter and may not succeed in the quiz. In one embodiment, threshold difficult value  233  is set by the course creator. A user&#39;s cumulative potential difficulty score  232  for question set  218  is a cumulative value indicating the user&#39;s overall performance in taking the quiz. In one embodiment, if a user exceeds the time specified by T 2  in providing the correct answer (but before the expiration of countdown timer T 1 ), the user&#39;s cumulative “possible difficulty” score  232  is incremented by the time differential, that is,
 
= PD ( u )+ T ( u )− T   2 
 
where PD(u) represents the last known potential difficulty score for the quiz set, T(u) represents the time taken by user to answer the question, and T 2  is the time for an average user to provide the correct answer. If the user does not answer the question in the allocated time, then T(u)=T 1 , the value of the countdown timer. In one embodiment, any user related time value is computed based on the clock time that elapses between the display of material and the next user action indicating completion of that question or question set (normally by selecting “next”).
 
     If either the threshold is exceeded, or if a single question is answered incorrectly twice, then A/D subsystem  110  instructs Content Display Subsystem  104  to inform the user that they are having difficulty and are offered the option of continuing with the quiz, reviewing the material again, or being shown a detailed level of information about the material. In one embodiment, the number of questions in a question set can be limited to each category of each lesson content  216 . 
       FIG. 7  illustrates a diagram  700  of a heuristically determined detailed training material associated with at least one category related to a quiz question, according to an embodiment of the present invention. As discussed above, once the user&#39;s tracking value reaches or advances the threshold value for a given category (or categories) then the system can, in one embodiment, leave the quiz area and take the user/student off the main path of the course to present the user with a much more detailed training material related to the category/categories. The detailed course material (e.g., detail level (2)  222 ) is based on the determination that the user lacks a through understating of the subject area associated with the category and display subject matter  704  to the user. The system can, in one embodiment, using the calculated timing responses, selected answer, and other metric(s), calculate a level of detailed training material that needs to be generated for the user. A level, in one embodiment, signifies how detailed a particular training material needs to be. For example, if the user lacks a few concepts for a given subject area, a lower level value can be assigned and less detailed training materials can be generated and displayed to the user. If however, a low level of understanding related to a particular category is determined, a much more detailed training material is generated and displayed to the user to study. 
     As contrasted with the base material (that was initially supplied), the (supplemental) customized material can include numerous examples followed immediately by short quizzes to enhance the likelihood of understanding the category by the user/student. At various times during the presentation of the supplemental material, if the short quiz responses are correct, the student is asked if he wishes to return to the main quiz (from where the quiz was initially terminated). 
     In another embodiment, the level of the detailed/supplemental training material displayed to the user is increased (thus, more detailed supplemental training material is dynamically displayed), if the user responds incorrectly to the short quiz questions. 
       FIG. 8  illustrates a flowchart  800  describing the process flow of a system that can heuristically analyze student behavior and tailor individualized or personalized training materials, to an embodiment of the present invention. As illustrated, at  802 , system presents user with educational courses tailored to specific knowledge domains. At  804 , the User chooses a particular educational course associated with the knowledge domain. At  806 , for the selected educational course, the user selects knowledge domain, and at least one lesson is displayed, each lesson comprising one or more categories associated with the knowledge domain. At  808 , User indicates to take quiz related to at least one lesson. At  810 , a quiz question related to at least one category of at least one lesson is displayed. At  812 , the user&#39;s response is recorded in database  106  (by user feedback/response tracking subsystem  108 ), including time taken to provide response, etc., associated with at least one category, as discussed herein. At  814 , system determines category threshold based on user&#39;s response from database  106  and time taken to provide response. At  816 , it is determined whether a category threshold been reached or surpassed. If so, at  818 , the quiz is terminated and a level of detailed learning course is determined and displayed to the user. In one embodiment, at  824 , the user is display short quiz related to detailed level training material. At  826 , if the user answers the questions correctly, control is passed on back to  808 , where the user indicates their desire to take the main quiz. In one embodiment, the user continues the quiz from where it was initially terminated. If however, at  826 , it is determined that the user has not answered the short quiz correctly, control is passed to  818 , and more detailed course level is displayed to the user. If however, at  816 , the threshold is not reached or surpassed, at  820 , it is determined if the quiz has been completed. If so, control passes back to  802 . However, in case the quiz is not completed, the system displays the next question, as discussed herein. 
       FIG. 9  illustrates a flowchart  900  describing the process flow of a server, according to an embodiment of the present invention. At  902 , the user is presented with educational course(s) tailored to specific knowledge domains from which user can select at least one knowledge domain. At  904 , based on user selection, at least one lesson is displayed, each lesson comprising subject matter related to one or more categories associated with the at least one knowledge domain. Responsive to user&#39;s instruction to display a quiz, at  906 , the system provides at least one question related to the one or more categories At  908 , user&#39;s answers that are incorrect for the question are determined. At  910 , time taken by user to submit response to the question is determined. At  912 , other metrics are determined (optional). At  914 , a threshold value for a category associated with question is determined. At  916 , once a threshold is reached/the system heuristically determines a level of detailed lessons to display to the user. At  918 , the determined level of lessons is displayed to the user. 
       FIG. 10  illustrates a flowchart  1000  describing the process flow of a client machine, according to an embodiment of the present invention. At  1002 , the user makes a selection to display educational course(s). At  1004 , the educational course(s) is displayed. At  1006 , the user indicates their desire to take quiz related to educational course(s); and a question is displayed. At  1008 , a timer begins and user&#39;s existing score (if any) is displayed. At  1010 , user selects answer. If the correct answer is selected, at  1012  it is determined if the quiz is complete, and if so, at  1014 , the process is terminated. However, if it is determined, at  1012 , that the quiz is not completed, at  1016 , it is determined whether to display the next question or heuristically determine detailed course. If it is determined to display the next question, control is passed back to  1008 , otherwise, in case of displaying a detailed course, at  1018 , Short quiz related to detailed/supplemental course is presented to user. If user, at  1020 , answers all short questions in the quiz correctly, control passes back to  1006 . Otherwise, a higher level of detailed course is displayed to the user, at  1022 , and thereafter control passes back to  1018 . 
       FIG. 11  describes a block diagram  1100  illustrating an exemplary network environment as implemented according to an embodiment of the present invention. Network environment includes a network coupling one or more servers  1104  and one or more clients  1108  to each other via a network  1106 . In particular embodiments, network is an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a metropolitan area network (MAN), a portion of the Internet, or another network or a combination of two or more such networks. This disclosure contemplates any suitable network. One or more links couple a server  1104  or a client  1108  to network  1106 . In particular embodiments, one or more links each includes one or more wired, wireless, or optical links. In particular embodiments, one or more links each includes an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, or another link or a combination of two or more such links. This disclosure contemplates any suitable links coupling servers and clients to network. 
     In particular embodiments, each server  1104  may be a unitary server or may be a distributed server spanning multiple computers or multiple datacenters. Servers may be of various types, such as, for example and without limitation, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, or proxy server. In particular embodiments, each server  1104  may include hardware, software, or embedded logic components or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server. For example, a web server is generally capable of hosting websites containing web pages or particular elements of web pages. More specifically, a web server may host HTML files or other file types, or may dynamically create or constitute files upon a request, and communicate them to clients in response to HTTP or other requests from clients. A mail server is generally capable of providing electronic mail services to various clients. A database server is generally capable of providing an interface for managing data stored in one or more data stores. In particular embodiments, a system using the techniques herein may be hosted on a server (e.g., as an LMS (e-learning) website belonging to MorfMedia, Inc.). Its users may access the e-learning system using their client devices (e.g. clients). 
     In particular embodiments, one or more data storages  1102  may be communicatively linked to one or more severs via one or more links. In particular embodiments, data storages  1102  may be used to store various types of information. In particular embodiments, the information stored in data storages  1102  may be organized according to specific data structures. In particular embodiments, each data storage  1102  may be a relational database. Particular embodiments may provide interfaces that enable servers or clients to manage, e.g., retrieve, modify, add, or delete, the information stored in data storage. 
     In particular embodiments, each client  1108  may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client. For example and without limitation, a client  1108  may be a desktop computer system, a notebook computer system, a netbook computer system, a handheld electronic device, or a mobile telephone. This disclosure contemplates any suitable clients. A client may enable a network user at client to access network. A client  1108  may enable its user to communicate with other users at other clients. 
     A client may have a web browser, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or more add-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOO TOOLBAR. A user or client may enter a Uniform Resource Locator (URL) or other address directing the web browser to a server, and the web browser may generate a Hyper Text Transfer Protocol (HTTP) request and communicate the HTTP request to server. Server may accept the HTTP request and communicate to client one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client  1108  may render a web page based on the HTML files from server for presentation to the user. This disclosure contemplates any suitable web page files. As an example and not by way of limitation, web pages may render from HTML files, Extensible Hyper Text Markup Language (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein, reference to a web page encompasses one or more corresponding web page files (which a browser may use to render the web page) and vice versa, where appropriate. 
     The techniques shown in the figures can be implemented using computer program instructions (computer code) and data stored and executed on one or more electronic systems (e.g., computer systems, etc.). Such electronic systems store and communicate (internally and/or with other electronic systems over a network) code and data using machine-readable media, such as machine-readable non-transitory storage media (e.g., magnetic disks; optical disks; random access memory; dynamic random access memory; read only memory; flash memory devices; phase-change memory). In addition, such electronic systems typically include a set of one or more processors coupled to one or more other components, such as one or more storage devices, user input/output devices (e.g., a keyboard, a touchscreen, and/or a display), and network connections. The coupling of the set of processors and other components is typically through one or more busses and bridges (also termed as bus controllers). The storage device and signals carrying the network traffic respectively represent one or more machine-readable storage media and machine-readable communication media. Thus, the storage device of a given electronic device typically stores code and/or data for execution on the set of one or more processors of that electronic device. 
     It should be apparent from this description that aspects of the present invention may be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other computer system in response to its processor, such as a microprocessor, executing sequences of instructions contained in memory, such as a ROM, DRAM, mass storage, or a remote storage device. In various embodiments, hardware circuitry may be used in combination with software instructions to implement the present invention. Thus, the techniques are not limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the computer system. In addition, throughout this description, various functions and operations are described as being performed by or caused by software code to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the code by a processor. 
       FIG. 12  is a block diagram  1200  illustrating a data processing system such as a computing system which may be used with one embodiment of the invention. For example, computing system may be implemented as part of a LMS. In one embodiment, computing system may represent the server in the LMS/e-learning system. Computing system may have a distributed architecture having dispersed units coupled through a network, or all of its components may be integrated into a single unit. Computing system may be implemented as part of a diverse range of products implemented by MorfMedia, Inc. 
     For example, computing system  1200  may represent any of data processing systems described above performing any of the processes or methods described above. System  1200  can include many different components. These components can be implemented as integrated circuits (ICs), portions thereof, discrete electronic devices, or other modules adapted to a circuit board such as a motherboard or add-in card of the computer system, or as components otherwise incorporated within a chassis of the computer system. Note also that system  1200  is intended to show a high level view of many components of the computer system. However, it is to be understood that additional or fewer components may be present in certain implementations and furthermore, different arrangement of the components shown may occur in other implementations. System  1200  may represent a desktop, a laptop, a tablet, a server, a mobile phone, a programmable logic controller, a personal digital assistant (PDA), a personal communicator, a network router or hub, a wireless access point (AP) or repeater, a set-top box, or a combination thereof. 
     In one embodiment, system  1200  includes processor  1201 , memory  1203 , and devices  1205 - 1208  via a bus or an interconnect  1222 . Processor  1201  may represent a single processor or multiple processors with a single processor core or multiple processor cores included therein. Processor  1201  may represent one or more general-purpose processors such as a microprocessor, a central processing unit (CPU), or the like. More particularly, processor  1201  may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processor  1201  may also be one or more special-purpose processors such as an application specific integrated circuit (ASIC), a cellular or baseband processor, a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, a graphics processor, a network processor, a communications processor, a cryptographic processor, a co-processor, an embedded processor, or any other type of logic capable of processing instructions. 
     Processor  1201 , which may be a low power multi-core processor socket such as an ultra low voltage processor, may act as a main processing unit and central hub for communication with the various components of the system. Such processor can be implemented as a system on chip (SoC). In one embodiment, processor  1201  may be an Intel® Architecture Core™-based processor such as an i3, i5, i10 or another such processor available from Intel Corporation, Santa Clara, Calif. However, other low power processors such as available from Advanced Micro Devices, Inc. (AMD) of Sunnyvale, Calif., an ARM-based design from ARM Holdings, Ltd. or a MIPS-based design from MIPS Technologies, Inc. of Sunnyvale, Calif., or their licensees or adopters may instead be present in other embodiments. 
     Processor  1201  is configured to execute instructions for performing the operations and methods discussed herein. System  1200  further includes a graphics interface that communicates with graphics subsystem  1204 , which may include a display controller and/or a display device. 
     Processor  1201  may communicate with memory  1203 , which in an embodiment can be implemented via multiple memory devices to provide for a given amount of system memory. As examples, the memory can be in accordance with a Joint Electron Devices Engineering Council (JEDEC) low power double data rate (LPDDR)-based design such as the current LPDDR2 standard according to JEDEC JESD 2010-2E (published April 2010), or a next generation LPDDR standard to be referred to as LPDDR3 that will offer extensions to LPDDR2 to increase bandwidth. As examples, 2/4/16 gigabytes (GB) of system memory may be present and can be coupled to processor  1210  via one or more memory interconnects. In various implementations the individual memory devices can be of different package types such as single die package (SDP), dual die package (DDP) or quad die package (QDP). These devices can in some embodiments be directly soldered onto a motherboard to provide a lower profile solution, while in other embodiments the devices can be configured as one or more memory modules that in turn can couple to the motherboard by a given connector. 
     Memory  1203  can be a machine readable non-transitory storage medium such as one or more volatile storage (or memory) devices such as random-access memory (RAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), static RAM (SRAM), or other types of storage devices such as hard drives and flash memory. Memory  1203  may store information including sequences of executable program instructions that are executed by processor  1201 , or any other device. For example, executable code and/or data of a variety of operating systems, device drivers, firmware (e.g., input output basic system or BIOS), and/or applications can be loaded in memory  1203  and executed by processor  1201 . An operating system can be any kind of operating systems, such as, for example, Windows® operating system from Microsoft®, Mac OS®/iOS® from Apple, Android® from Google®, Linux®, Unix®, or other real-time or embedded operating systems such as VxWorks. 
     System  1200  may further include IO devices such as devices  1205 - 1208 , including wireless transceiver(s)  1205 , input device(s)  1206 , audio IO device(s)  1207 , and other IO devices  1208 . Wireless transceiver  1205  may be a WiFi transceiver, an infrared transceiver, a Bluetooth transceiver, a WiMax transceiver, a wireless cellular telephony transceiver, a satellite transceiver (e.g., a global positioning system (GPS) transceiver), or other radio frequency (RF) transceivers, network interfaces (e.g., Ethernet interfaces) or a combination thereof. 
     Input device(s)  1206  may include a mouse, a touch-pad, a touch-sensitive screen (which may be integrated with display device  1204 ), a pointer device such as a stylus, and/or a keyboard (e.g., physical keyboard or a virtual keyboard displayed as part of a touch-sensitive screen). For example, input device  1206  may include a touch-screen controller coupled to a touch-screen. The touch-screen and touch-screen controller can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with the touch-screen. 
     Audio IO device  1207  may include a speaker and/or a microphone to facilitate voice-enabled functions, such as voice-recognition, voice-replication, digital recording, and/or telephony functions. Other optional devices  1208  may include a storage device (e.g., a hard drive, a flash-memory device), universal serial bus (USB) port(s), parallel port(s), serial port(s), a printer, a network interface, a bus bridge (e.g., a PCI-PCI bridge), sensor(s) (e.g., a motion sensor such as an accelerometer, gyroscope, a magnetometer, a light sensor, compass, a proximity sensor, etc.), or a combination thereof. Optional devices  1208  may further include an imaging processing subsystem (e.g., a camera), which may include an optical sensor, such as a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, utilized to facilitate camera functions, such as recording photographs and video clips. Certain sensors may be coupled to interconnect  1222  via a sensor hub (not shown), while other devices such as a keyboard or thermal sensor may be controlled by an embedded controller (not shown), dependent upon the specific configuration or design of system  1200 . 
     To provide for persistent storage of information such as data, applications, one or more operating systems and so forth, a mass storage (not shown) may also couple to processor  1201 . In various embodiments, to enable a thinner and lighter system design as well as to improve system responsiveness, this mass storage may be implemented via a solid state device (SSD). However in other embodiments, the mass storage may primarily be implemented using a hard disk drive (HDD) with a smaller amount of SSD storage to act as a SSD cache to enable non-volatile storage of context state and other such information during power down events so that a fast power up can occur on RE-initiation of system activities. Also a flash device may be coupled to processor  1201 , e.g., via a serial peripheral interface (SPI). This flash device may provide for non-volatile storage of system software, including basic input/output software (BIOS) as well as other firmware of the system. 
     Note that while system  1200  is illustrated with various components of a data processing system, it is not intended to represent any particular architecture or manner of interconnecting the components; as such details are not germane to embodiments of the present invention. It will also be appreciated that network computers, handheld computers, mobile phones, and other data processing systems which have fewer components or perhaps more components may also be used with embodiments of the invention. 
     Thus, methods, apparatuses, and computer readable medium are described to implement a dynamically customized three dimensional geospatial visualization system. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.