Skip to content

Module Smart Tutor

Nikola Luburić edited this page Oct 25, 2021 · 10 revisions

The Smart Tutor has grown into a standalone solution that has been moved to the Clean CaDET Tutor repository, following a major redesign of its components. Below is the old version of the Tutor, used for the year one experiment of the Clean CaDET project.

The Smart Tutor module hosts the educational aspect of Clean CaDET. It consists of four aggregates that collaborate to support a series of intelligent tutoring use cases.

With the Content Model, we are searching for ways to represent knowledge in a flexible structure that aligns with learning goals and outcomes. Our Learner Model gathers everything we know about the learner – their proficiencies, cognitive characteristics, and learning preferences. The Instructor Model aggregates effective learning strategies and effectively delivers knowledge to its learner. It accomplishes this by examining who the learner is and determining the most suitable content it can offer. Finally, the Progress Model watches the leaner as they interact with the content and gathers data to update the learner model as it learns more about them.

The following communication diagram illustrates the main success scenario of our major use cases.

  1. The first communication flow supports the interactive learning use case, where a learner explores the educational content offered by the platform. Once the learner requests educational content, the progress model check if the learner already explored the requested content and if so, retrieves the content from the Content Model. Otherwise, it asks the instructor to create a suitable set of learning objects (1.1). The instructor examines the learner's profile (1.2) and finds the most suitable content from the available data (1.3).
  2. By monitoring the learners' progress through the educational content, educators can better understand which lectures or learning objects need to be enhanced or reworked. Furthermore, by consulting with the Instructor Model, educators can identify which learner profiles are less supported, helping them prioritize new educational content development.
  3. Finally, by monitoring an individual's progress, the Tutor learns more about the learner and can over time offer a better educational experience.

Content Model

The content model is charged with structuring and storing the learning objects that describe concepts from the quality code engineering domain. These include textual descriptions, images, videos, coding exercises, etc. related to concepts such as cohesion, coupling, good naming, etc. The diagram below models a subset of our content model.

Lectures

The Lecture, KnowledgeNode and LearningObjectSummary classes model the outline of a lecture. As an example, a Lecture dedicated to "Good Naming" might have the following three knowledge nodes (KNs):

  1. A KN that presents the motivation and basic factual knowledge and heuristics regarding assigning good names to code identifiers (factual knowledge).
  2. A KN that offers exercises and challenges where the learner performs refactoring and applies the heuristics (procedural knowledge).
  3. A KN that explores the broader processes and implications of assigning meaningful names and how it relates to other clean code concepts (conceptual knowledge).

Each KN defines a learning objective and is composed of LearningObjectSummaries - brief descriptions of what knowledge should be presented in this point in the lecture. Each LearningObjectSummary can then be resolved by one or more LearningObjects, selected based on the learner's preferences.

Learning Objects

Each LearningObject presents a snippet of educational content such as a textual paragraph, a video, or a question that the learner answers.

Our learning objects (LOs) can roughly be divided into two categories, based on the learner's interaction method - passive (i.e., Text, Image, Video) and interactive (i.e., Question, ArrangeTask, Challenge). The passive LOs are data structures, while the interactive LOs contain logic for evaluating the correctness and providing feedback for any submissions the learner makes.

Challenges

Challenges are interactive exercises that provide a training ground for real-world refactoring. We currently support a plugin for Visual Studio and Visual Studio Code through which the learner can solve challenges hosted here. The following communication diagram illustrates the basic flow.

  1. Using the supported plugins, the learner selects and submits their challenge solution in the form of source code.
  2. The service sends the code to the Code Model to build our CaDETModel and identify any syntax errors.
  3. Provided there are no syntax errors, the Challenge evaluates the correctness of the submission by applying a series of fulfillment strategies. Each strategy applies a series of rules (e.g., determining the range of a particular code metric or the properties of some code snippet) and returns hints for each rule that is not fulfilled. The hints can reference learning object summaries.
  4. The service maps all learning object summaries (related to applicable hints and the solution) are sent to the Instructor to gather learning objects that are most suitable for the learner that made the submission.
  5. The evaluation outcome is returned to the plugin and displayed there.

Populating Your Own Content Model

Currently, the platform offers three clean code lectures in Serbian, and a a single lecture in English.

By following the structure of the SQL script, educators can define their lectures and learning objects.

Learner Model

The learner model hosts information related to the user. This includes an estimate of the user's current knowledge (discovered through progress tracking, testing, and event sourcing) and their personality traits (discovered through behavior patterns and grading of learning objects).

VARK

Currently, the platform supports the VARK learning preferences, modeling the visual, aural, read/write, and kinesthetic scores of the learner. Upon registration, the learner submits their VARK score, which enables the Instructor model to offer the most suitable objects based on these preferences.

Instructor Model

The glue that defines the Tutor's output is the instructor model, where we use recommender systems to build knowledge nodes of learning objects that best suit the user. The knowledge-based RS contains rules for constructing knowledge nodes following effective learning strategies (i.e., Make it Stick) and adhering to learning preferences (i.e., the VARK model).

To support a flexible design that can be easily expanded, the recommenders are defined behind the IInstructor interface. Multiple instructors are coordinated by the HybridInstructor class that also implements this interface.

Progress Model

The progress model tracks the learner's progress while interacting with the Smart Tutor. It collects data that helps educators better define the learner's preferences and assess the overall quality of their learning objects. This includes:

  • The learner's feedback on particular learning objects. For example, when one student always downgrades images, they probably dislike this medium for delivering knowledge. On the other hand, when a particular image is downgraded by most students, it is probably of low quality and should be reworked.
  • The learner's submissions to interactive learning objects (i.e., questions, arrange tasks, challenges). Such data helps educators identify challenging and trivial questions based on the success rate, as well as the particular learner's perseverance (e.g., a learner that tries a challenge many time before viewing a solution).
  • The learner's progress through the knowledge nodes, identifying what the learner completed and what they have yet to access.