Learning Analytics

Learning Analytics

How learning analytics transform education through data. Discover techniques for measuring engagement, predicting outcomes, and improving learning experiences.

Learning Analytics: Data-Driven Educational Insights

Learning analytics transforms educational data into actionable insights. These techniques help educators understand how students learn, predict who needs help, and continuously improve educational experiences.

What is Learning Analytics?

Definition

Learning Analytics: The measurement, collection, analysis, and reporting of data about learners and their contexts, for purposes of understanding and optimising learning and the environments in which it occurs.

Core Components:

  • Data Collection: Capturing learner interactions
  • Analysis: Finding patterns and insights
  • Visualisation: Making data understandable
  • Action: Using insights to improve learning
  • Feedback Loop: Continuous improvement

Types of Analytics

Descriptive (What happened?):

code
- How many students completed the course?
- What's the average time spent per module?
- Which topics have highest dropout?

Diagnostic (Why did it happen?):

code
- Why did students fail this assessment?
- What correlates with course completion?
- Which behaviors predict success?

Predictive (What will happen?):

code
- Which students are at risk of dropping out?
- Who will need additional support?
- What's the expected completion time?

Prescriptive (What should we do?):

code
- What intervention will help this student most?
- Which content should we recommend next?
- How should we modify the course?

Data Sources

Learning Management Systems (LMS)

Captured Data:

code
Login patterns:
- Frequency of access
- Time spent on platform
- Access times (patterns)

Content interaction:
- Pages viewed
- Videos watched
- Resources downloaded
- Navigation paths

Assessments:
- Quiz attempts and scores
- Assignment submissions
- Time on assessments
- Attempt patterns

Example LMS Log:

code
{
  user_id: "student_123",
  timestamp: "2026-01-03T14:32:15Z",
  action: "video_play",
  resource: "module_2_intro",
  duration: 237,  // seconds watched
  completion: 0.85  // 85% watched
}

Interactive Content

Granular Interaction Data:

code
Coding platforms:
- Code submissions
- Compilation errors
- Execution attempts
- Time between attempts
- Help requests

Interactive exercises:
- Clicks and inputs
- Paths through content
- Hint requests
- Error patterns

Example Coding Log:

code
Problem: "Write function to reverse string"
Attempt 1: Syntax error (line 3)
Attempt 2: Logic error (partial solution)
Hint requested: "Consider string slicing"
Attempt 3: Correct solution
Total time: 12 minutes

Assessment Data

Beyond Just Scores:

code
Multiple-choice questions:
- Distractor analysis (wrong answers chosen)
- Time per question
- Question order effects
- Changes after review

Open-ended:
- Response length
- Vocabulary used
- Structure and coherence
- Revision patterns

Social Learning Data

Collaborative Behavior:

code
Discussion forums:
- Post frequency
- Response quality
- Network position (central vs peripheral)
- Help-seeking vs help-giving

Study groups:
- Participation patterns
- Contribution balance
- Communication style
- Group dynamics

External Data

Context:

code
Demographics (carefully!):
- Prior education level
- Language background
- Time zone

Goals and motivation:
- Career aspirations
- Reasons for enrollment
- Time commitment

Performance:
- Employment outcomes
- Skill application
- Continued learning

Key Metrics and Indicators

Engagement Metrics

Time-Based:

code
Total time on platform
Active learning time (interaction vs passive)
Session duration and frequency
Time of day patterns
Consistency over time

Calculation Example:

python
def calculate_engagement_score(user_logs):
    # Active days in last 30
    active_days = count_unique_days(user_logs, last_n_days=30)
    
    # Average session length
    avg_session = mean(session_lengths(user_logs))
    
    # Content interaction depth
    interaction_depth = sum(clicks, video_completions, submissions)
    
    # Normalise and combine
    engagement = (
        0.4 * (active_days / 30) +
        0.3 * normalise(avg_session, min=5, max=60) +
        0.3 * normalise(interaction_depth, min=10, max=100)
    )
    
    return engagement  # 0 to 1

Interpretation:

code
< 0.3: At risk (minimal engagement)
0.3-0.6: Moderate (could improve)
> 0.6: High engagement (on track)

Performance Metrics

Assessment Performance:

code
Score distributions:
- Mean, median, mode
- Standard deviation
- Percentile rankings

Trends:
- Improvement over time
- Concept mastery progression
- Difficulty adaptation

Patterns:
- Which concepts are difficult?
- Where do students get stuck?
- What predicts success?

Learning Velocity:

code
Concepts mastered per week
Time to competency per skill
Acceleration or deceleration
Comparison to cohort average

Progress Indicators

Completion Tracking:

code
Content completion rate:
- Overall course
- Per module
- Per content type

Milestone achievements:
- Quizzes passed
- Projects completed
- Certificates earned

Pacing:
- Ahead of schedule
- On track
- Behind schedule
- Dropped out

Example Dashboard:

code
Student: Jane Smith
Overall progress: 67% complete
Expected completion: March 15
Current pace: On track

Module breakdown:
✓ Module 1: Complete (95% score)
✓ Module 2: Complete (88% score)
→ Module 3: In progress (45% complete)
  Module 4: Not started
  Module 5: Not started

At-Risk Indicators

Warning Signs:

code
Declining engagement:
- Fewer logins over time
- Shorter sessions
- Incomplete content

Poor performance:
- Multiple failed assessments
- Low quiz scores
- Incomplete assignments

Behavioral patterns:
- Last-minute submissions
- No discussion participation
- Excessive hint requests
- Long gaps between sessions

Risk Score Calculation:

python
def calculate_risk_score(student):
    risk_factors = {
        'low_engagement': student.avg_sessions_per_week < 2,
        'poor_performance': student.avg_score < 60,
        'declining_trend': student.recent_scores < student.early_scores,
        'no_social': student.forum_posts == 0,
        'deadline_misses': student.late_submissions > 2,
        'long_absence': days_since_last_login(student) > 7
    }
    
    weights = {
        'low_engagement': 0.25,
        'poor_performance': 0.30,
        'declining_trend': 0.20,
        'no_social': 0.10,
        'deadline_misses': 0.10,
        'long_absence': 0.05
    }
    
    risk = sum(weights[factor] for factor, present in risk_factors.items() if present)
    
    return risk  # 0 (low risk) to 1 (high risk)

Intervention Triggers:

code
Risk < 0.3: Low (automated nudges)
Risk 0.3-0.6: Medium (personalised outreach)
Risk > 0.6: High (immediate intervention)

Analysis Techniques

Cohort Analysis

Purpose: Compare groups of learners

Example:

code
Cohort A (Jan 2025): 
- Started: 100 students
- Week 4: 85 active (85%)
- Week 8: 67 active (67%)
- Completed: 58 (58%)

Cohort B (Feb 2025):
- Started: 120 students
- Week 4: 102 active (85%)
- Week 8: 89 active (74%) ← Better retention!
- Completed: TBD

Analysis: What changed?
- New onboarding process added
- Better pacing in Module 2
- More engaging content in Week 3

Retention Curves:

code
Week 0: 100% (baseline)
Week 1: 92%
Week 2: 84%
Week 3: 76%  ← Drop
Week 4: 73%
Week 8: 67%
Week 12: 58%

Investigate Week 3 content!

Learning Path Analysis

Sequential Pattern Mining:

code
Common successful paths:
Path A: Lecture → Practice → Quiz → 88% pass rate
Path B: Lecture → Quiz → Practice → 76% pass rate
Path C: Practice → Lecture → Quiz → 82% pass rate

Insight: Practice before quiz improves outcomes

Drop-off Analysis:

code
Module 1 → Module 2: 92% proceed
Module 2 → Module 3: 78% proceed ← Drop
Module 3 → Module 4: 95% proceed

Why does Module 3 have lower retention?
- Difficulty spike?
- Less engaging content?
- External factors (mid-semester)?

Navigation Patterns:

code
Students who succeed:
- Follow linear path: 65%
- Jump around: 35%

Students who struggle:
- Follow linear path: 45%
- Jump around: 55%

Insight: Struggling students search for help
Action: Add better navigation/search

Time Series Analysis

Engagement Over Time:

code
Pattern: Typical learner
Week 1: High activity (new user excitement)
Week 2-3: Decline (novelty wears off)
Week 4: Spike (first assessment)
Week 5-7: Steady
Week 8: Decline (dropout risk)
Week 9: Push (deadline approaching)

Interventions:
- Week 3: Gamification element
- Week 8: Check-in email

Temporal Patterns:

code
Time of day usage:
Morning (6-9am): 15%
Midday (12-2pm): 25%
Evening (6-10pm): 40%  ← Peak
Late night (10pm-1am): 20%

Day of week:
Monday-Thursday: Steady
Friday: Drop
Weekend: Variable

Insight: Schedule live sessions during peak times

Predictive Modeling

Dropout Prediction:

python
from sklearn.ensemble import RandomForestClassifier

# Features
features = [
    'avg_session_duration',
    'login_frequency',
    'quiz_scores_mean',
    'assignment_completion_rate',
    'forum_activity',
    'days_since_last_login',
    'video_completion_rate',
    'help_requests'
]

# Target
target = 'completed_course'  # 1 = completed, 0 = dropped

# Train model
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)

# Predict for current students
at_risk_students = model.predict_proba(X_current)[:, 0] > 0.7

# Feature importance
print(model.feature_importances_)
# → [0.25, 0.20, 0.18, 0.12, 0.08, 0.07, 0.06, 0.04]
# Top predictor: avg_session_duration

Performance Prediction:

code
Predict final grade after Week 4:

Features:
- Week 1-4 quiz scores
- Engagement metrics
- Assignment quality
- Forum participation

Model: Linear regression
Accuracy: R² = 0.72

Use for:
- Early intervention
- Study group formation
- Personalised recommendations

Network Analysis

Social Learning Networks:

code
Forum interaction graph:

Nodes: Students
Edges: Replies, mentions, collaborations

Metrics:
- Centrality: Who is most connected?
- Betweenness: Who bridges groups?
- Clusters: Are there isolated groups?

Insights:
- Central students → Potential mentors
- Isolated students → Need connection
- Dense clusters → Effective study groups

Knowledge Sharing:

code
Who helps whom?

Helpers (high out-degree):
- Engaged, knowledgeable students
- Natural TAs/mentors
- Community builders

Help-seekers (high in-degree):
- May need additional support
- Active learners
- Engaged despite struggles

No connections:
- At-risk group
- May feel isolated
- Intervention needed

Visualisation and Dashboards

Learner Dashboards

Progress View:

code
┌─ Your Progress ────────────────────┐
│ 67% Complete                       │
│ ████████████████░░░░░░░░░░        │
│                                    │
│ Modules: 3 of 5 complete           │
│ Quizzes: 8 of 12 passed            │
│ Projects: 2 of 4 submitted         │
│                                    │
│ Expected completion: March 15      │
│ Current pace: On track ✓           │
└────────────────────────────────────┘

Performance View:

code
┌─ Your Performance ─────────────────┐
│                                    │
│ Overall: 85%  ↗ +3% from last week│
│                                    │
│ Strengths:                         │
│  ⭐ Variables & Data Types: 95%   │
│  ⭐ Functions: 92%                │
│                                    │
│ Areas to improve:                  │
│  ⚠ Loops: 68%                     │
│  ⚠ Error Handling: 72%            │
│                                    │
│ 📚 Recommended: Practice loops     │
└────────────────────────────────────┘

Educator Dashboards

Class Overview:

code
┌─ Class Analytics ──────────────────┐
│ CS101 - Spring 2026 │ 87 students  │
├────────────────────────────────────┤
│                                    │
│ Overall Progress:                  │
│ ████████████░░░░░░░░ 62%          │
│                                    │
│ Engagement: ⚠ Below target        │
│ Performance: ✓ On track           │
│ Completion rate: 73% (vs 68% last)│
│                                    │
│ 🔴 At-risk: 12 students           │
│ 🟡 Struggling: 18 students        │
│ 🟢 On track: 57 students          │
└────────────────────────────────────┘

Individual Student View:

code
┌─ Student: Alice Johnson ───────────┐
│ Risk level: 🟡 Medium              │
│                                    │
│ Recent activity:                   │
│ • Last login: 6 days ago  ⚠       │
│ • Quiz 3: 62% (below avg)         │
│ • Assignment 2: Not submitted     │
│                                    │
│ Patterns:                          │
│ • Declining engagement trend      │
│ • Struggles with Module 3 content │
│ • Low forum participation         │
│                                    │
│ Recommendations:                   │
│ • Send check-in email             │
│ • Suggest office hours            │
│ • Connect with study group        │
└────────────────────────────────────┘

Course-Level Analytics

Content Effectiveness:

code
Module Performance:

Module 1: ████████░ 87% avg score
Module 2: ████████░ 85% avg score
Module 3: █████░░░░ 68% avg score ← Issue!
Module 4: ███████░░ 82% avg score

Video engagement:
Module 3 Video 1: 45% completion ← Drop-off point
Module 3 Video 2: 78% completion

Action items:
1. Review Module 3 Video 1 (too long? confusing?)
2. Add practice before Module 3 quiz
3. Consider splitting Module 3 into two

Assessment Analysis:

code
Quiz 3 - Question Analysis:

Q1: 92% correct ✓
Q2: 88% correct ✓
Q3: 45% correct ✗ ← Problem question
Q4: 78% correct ✓
Q5: 82% correct ✓

Q3 Distractor analysis:
- Option A: 12% (correct answer)
- Option B: 45% (common mistake: off-by-one error)
- Option C: 28% (conceptual misunderstanding)
- Option D: 15% (guess)

Action: Add example about off-by-one errors before Q3

Ethical Considerations

Privacy

Data Minimization:

code
Collect only what's necessary:
✓ Performance data
✓ Engagement metrics
✓ Anonymous usage patterns

Don't collect:
✗ Keystroke logging (too invasive)
✗ Webcam monitoring (privacy violation)
✗ Unrelated browsing behavior

Anonymization:

code
For research/aggregation:
- Remove direct identifiers
- Aggregate small groups
- Use differential privacy
- K-anonymity (at least k similar records)

Transparency:

code
Tell learners:
✓ What data is collected
✓ How it's used
✓ Who has access
✓ How long it's kept
✓ How to opt out

Bias and Fairness

Algorithmic Bias:

code
Risks:
- Historical data reflects existing inequities
- Proxies for protected characteristics
- Feedback loops amplify bias

Example:
If model trained on data where certain groups 
historically performed poorly → Model predicts they 
will perform poorly → Creates self-fulfilling prophecy

Mitigation:

code
1. Audit for bias across groups
2. Use fairness-aware ML techniques
3. Don't use sensitive attributes unless necessary
4. Regular impact assessments
5. Human oversight of algorithmic decisions

Surveillance Concerns

Balance:

code
Helpful analytics ✓:
- Aggregate course improvement
- Voluntary learner progress tracking
- Opt-in performance insights

Harmful surveillance ✗:
- Constant monitoring
- Punitive use of data
- Invasion of privacy
- Pressure and stress

Agency and Consent

Learner Control:

code
✓ Opt-in for detailed tracking
✓ View their own data
✓ Delete their data
✓ Understand how it's used
✓ Control who sees it

Implementing Learning Analytics

Getting Started

Phase 1: Foundation (Months 1-3)

code
1. Define goals:
   - What questions do you need answered?
   - What decisions will be informed?
   
2. Identify data sources:
   - LMS logs
   - Assessment data
   - User surveys

3. Set up basic tracking:
   - Login frequency
   - Content completion
   - Assessment scores

4. Create simple dashboards:
   - Progress tracking
   - Engagement overview

Phase 2: Analysis (Months 4-6)

code
1. Deeper metrics:
   - At-risk identification
   - Performance prediction
   - Content effectiveness

2. Visualisations:
   - Trend charts
   - Comparison views
   - Individual profiles

3. Initial interventions:
   - Automated reminders
   - Personalised recommendations

Phase 3: Optimization (Months 7-12)

code
1. Advanced analytics:
   - Predictive models
   - A/B testing
   - Causal analysis

2. Automated personalisation:
   - Content recommendations
   - Difficulty adaptation
   - Pacing adjustments

3. Continuous improvement:
   - Feedback loops
   - Iterative refinement

Tools and Platforms

Open Source:

code
- LAPA (Learning Analytics Platform)
- Apache Spark (big data processing)
- Jupyter notebooks (analysis)
- Tableau Public (visualisation)
- R/Python (statistical analysis)

Commercial:

code
- Brightspace Insights
- Canvas Analytics
- Blackboard Analytics
- Coursera Analytics
- EdX Insights

Custom Solutions:

code
Stack:
- Data warehouse: PostgreSQL, MongoDB
- Processing: Python (pandas, scikit-learn)
- Visualisation: D3.js, Plotly
- Dashboards: Dash, Streamlit
- APIs: FastAPI, GraphQL

Best Practices

Data Quality:

code
1. Validate data integrity
2. Handle missing values appropriately
3. Document data sources and definitions
4. Regular audits
5. Version control for datasets

Actionable Insights:

code
Not just: "Engagement is down 15%"
But: "Engagement drops in Week 3. Students report 
Module 3 is too difficult. Recommend: Add scaffolding 
video and practice problems before Quiz 3."

Iterative Improvement:

code
1. Collect data
2. Analyse patterns
3. Form hypothesis
4. Test intervention
5. Measure impact
6. Refine and repeat

Case Studies

Georgia State University

Challenge: 40% graduation rate, achievement gaps

Analytics Implementation:

  • 800+ risk factors tracked
  • Predictive models for at-risk students
  • 50,000+ early alerts per year
  • Proactive advising interventions

Results:

  • Graduation rate: 40% → 54%
  • Achievement gaps reduced significantly
  • $22 million in additional graduation revenue

Purdue University (Signals)

System: Real-time feedback for students

Features:

  • Traffic light system (green/yellow/red)
  • Predictive algorithm based on:
  • LMS activity
  • Assessment performance
  • Prior academic performance
  • Automated and personalized feedback

Results:

  • Increased student success rates
  • Higher retention
  • Earlier intervention

Future of Learning Analytics

Emerging Trends

Real-Time Analytics:

code
Move from:
- Weekly reports
- Delayed insights

To:
- Live dashboards
- Instant feedback
- Just-in-time interventions

Multimodal Analytics:

code
Combine:
- Clickstream data
- Text analysis
- Video engagement
- Biometric data (ethical use)
- Social network data

Learning at Scale:

code
- MOOCs with millions of learners
- Cross-institutional data
- Longitudinal tracking
- Career outcome analytics

Responsible Analytics

Principles:

code
1. Transparency: Clear about what's collected and why
2. Privacy: Protect learner data
3. Fairness: Monitor for and mitigate bias
4. Agency: Learner control over their data
5. Benefit: Use data to help, not harm
6. Consent: Informed opt-in
7. Purpose limitation: Use data only for stated purposes

Next Steps

Explore related topics:

Learning analytics has enormous potential to improve education, but it must be implemented thoughtfully with attention to privacy, fairness, and learner agency. The goal is insight that leads to action—better learning experiences and outcomes for all students.