/edm-networks

Modelling Math Learning on an Open Access Intelligent Tutor

Modelling Math Learning on an Open Access Intelligent Tutor

This repo presents a straightforward way for researchers and lecturers to quickly follow up on a particular student's progression using networks. In addition, topics studied by students present differences that can be exploited to personalize the student's learning. The potential application of unsupervised machine learning approaches such as HMMs or embeddings using deep learning might showcase hidden and higher level representations of learning states that can be applied to Intelligent Tutoring Systems and online courses.

Please consider citing the following if you use any of the work:

@inproceedings{azcona2018modelling,
  title={Modelling math learning on an open access intelligent tutor},
  author={Azcona, David and Hsiao, I-Han and Smeaton, Alan F},
  booktitle={International Conference on Artificial Intelligence in Education},
  pages={36--40},
  year={2018},
  organization={Springer}
}

ASU's Global Freshmen Academy

ASU Online offers 13 courses, great variety of schools (from Sociology to Astronomy)

No Transcript | No Application | Pay tuition after | Same courses as on-campus

Our analysis focuses on two MATH modules:

  • MAT117x: College Algebra and Problem Solving
  • MAT170x: Precalculus

ALEKS

These courses leverage the Assessment and LEarning in Knowledge Spaces (ALEKS) technology, a web-based assessment and learning system. ALEKS uses Artificial Intelligence to map the student's knowledge. ALEKS is based on knowledge spaces who describe the possible states of knowledge of a learner. This technology adapts and navigates each student by determining what the student may know/not know in a course and guides her to topics she is most ready to learn. Find out more at https://www.aleks.com/.

Data

Number Desc
+15K students
+40K assessments
+8M daily aggregate events of the topics learned and retained
~190K students mastering topics
+5M transactions of students navigating through the concepts

Students are assessed continuously while navigating through ALEKS

Notebooks

  1. Intro: Intro to ASU's Global Freshman Academy (GFA), ALEKS, courses taught at ASU Online using ALEKS and data extracted
  2. Data Processing: explore, graph and process the data not to use some empty dataset
  3. EDA: Exploratory Data Analysis
  4. Networks: Analysis using Networks and NetworkX
  5. Predictive Modelling: Modelling using features extracted from the networks developed
  6. HMM: Hidden Markov Models
  7. Clustering: clustering topics based on their description

You can always view a notebook using https://nbviewer.jupyter.org/

Figures

We grabbed a snapshot of the data between April 2016 and June 2017 as there was a gap afterwards.

Course percentage finished by students:

Students working per section:

Ordered duration per topic colored by activity:

Student working on different topic and going through the learning states:

Comparing two topics with high C vs high W:

Comparing sections:

Web Application

The web app has been developed for exploring the data and results in an easy and powerful way using technologies like Flask for a web application using Python, MongoDB to store your enourmous amount of data, D3 to plot interactive graphs on the web using NVD3 and NetworkX to plot your networks visualizations using JSNetworkX.

Technologies

Deployment

Virtual Environment using Bash

  1. Creation of a virtual environments done by executing the command venv
$ python3 -m venv env/
  1. Command to activate virtual environment
$ source env/bin/activate
  1. Install dependencies
(env) $ pip install -r requirements.txt
  1. List the libraries installed on your environment
(env) $ pip freeze
  1. Start your MongoDB
$ mongod
  1. Connect to the MongoDB's CLI
$ mongo
...
> show dbs
...
> use predict_aleks
switched to db predict_aleks
> show tables
assessments
concepts
daily
mastery
paths
patterns
transactions
> db.assessments.findOne()
...
  1. Store data, extract patterns and plot activity:
(env) $ python src/analytics/pipeline.py
  1. Start Jupyter Notebook
(env) $ jupyter notebook
(env) $ ...
  1. Start the development server
(env) $ python src/app.py
(env) $ ...
  1. When you are done, the command to deactivate virtual environment
(env) $ deactivate