SlideShare a Scribd company logo
Pythia Reloaded: An Intelligent
Unit Testing-Based Code Grader for Education
Dr Sébastien Combéfis 1,2 Alexis Paques 2
1École Centrale des Arts et Métiers (ECAM)
2Computer Science and IT in Education (CSITEd)
July 14, 2015
[CHESE 2015, Baltimore, MD, USA]
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons
Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
Context
Automatic assessment of codes
Programming learning platforms, MOOCs,
higher education courses, competitions...
Two major kinds of code assessment
Unit testing frameworks
Competition graders
Platform for automatic assessment and “intelligent” feedback
Suited for education and that helps learners
3
Pythia framework
Released as an open-source project
http://www.pythia-project.org
A unit testing framework...
Functional tests on learners’ code
...and a competition grader
Sandboxed environment with execution constraints
Prototyped in 2012, used for a MOOC in Spring 2014
4
Architecture
The Pythia framework consists in three layers
System layer Safe execution of jobs
Task layer Feedbacks
Problem layer Context and input/output structure
Problem layer
Task layer
System layer
5
System layer
Front-ends communicate with the outside world
Pools manage the safe execution of jobs
Front-end
Front-end
Front-end
Queue
Pool
Pool
6
Job execution
Sandbox uses UML with trimmed-down version of ArchLinux
The VM boots in under one second
A job has an environment and a task filesystem
Constraints can be added to the VM (time, memory and output)
{
"environment": "python",
"taskfs": "hello-world-python.sfs",
"limits": {
"time": 60,
"memory": 32,
"disk": 50,
"output": 1024
}
}
7
Problem example
A problem combines several tasks and adds a context
8
Pythia LMS
9
Unit Testing-Based Grading
Different kinds of tasks are possible
Examine stdout, evaluate time complexity, run unit tests...
Unit testing is for developers
Feedback is related to the specification of the function
Feedback for learners is related to the problem to be solved
10
Main executable I
1 Preprocess
Integrates code snippets from learners into skeletons
2 Compile
Analyses statically the code and compiles it
3 Generate
Generates tests sets and saves them to a file
11
Main executable II
4 Execute
Executes learner’s code against tests sets, generates data
5 Postprocess
Analyses generated data, and produces analysis results
6 Feedback
Generates feedbacks
12
Configuration-based definition
{
"q1": {
"argc": 2,
"predefined": {
"argv": [{
"data": "(10, 5)",
"feedback": {
"10": "Have you summed the 2nd parameter?",
"5": "Have you summed the 1st parameter?"
}
}, {
"data": "(7, 15)"
}, {
"data": "(-1, 2)",
"feedback": {
"*": "Have considered negative parameter?",
}
}, {
"data": "(12, 0)"
}]
},
"random": {
"n": 10,
"args": ["int(-20,20)", "int(-20,20)"]
},
"code": "def sum(a, b):n return a + b"
}
} 13
Importance of feedback
Predefined tests must cover errors often made by learners
Feedback should be related to the problem being solved
“Your code failed for the input a = 10, b = 5.
The expected result is 15 and your code produced 10.
Have you summed the 2nd parameter?”
14
Visual feedback
Visual feedback to be interpreted by the learner
15
Conclusion
Pythia is an open-source platform containing
a unit testing-based grader specifically designed for education
Ongoing work
Definition and specification of new kinds of tasks
Development of Pythia Studio and Pythia LMS
Future work
Explore use of other kinds of code checks
Mining code to identify common errors to extract feedback
16

More Related Content

What's hot (20)

PPTX
Java concurrency
Hithem Ahmed
 
PPTX
Byte code field report
Rafael Winterhalter
 
PDF
Virtual Separation of Concerns
chk49
 
PDF
Java Fundamentals
Shalabh Chaudhary
 
PPTX
More on Classes and Objects
Payel Guria
 
PPSX
C# 6.0 - April 2014 preview
Paulo Morgado
 
PDF
Lambda Functions in Java 8
Ganesh Samarthyam
 
PPSX
Java Tutorial
Akash Pandey
 
PPTX
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
Abu Saleh
 
PPTX
Java Notes
Sreedhar Chowdam
 
PPT
Presentation to java
Ganesh Chittalwar
 
PDF
Java Programming - 05 access control in java
Danairat Thanabodithammachari
 
PPTX
Operator overload rr
Dhivya Shanmugam
 
PDF
Shiksharth com java_topics
Rajesh Verma
 
PPTX
Clean code slide
Anh Huan Miu
 
PPTX
clean code book summary - uncle bob - English version
saber tabatabaee
 
PPTX
Java 10, Java 11 and beyond
Rafael Winterhalter
 
PPTX
Virtual Separation of Concerns (2011 Update)
chk49
 
PPT
E:\Plp 2009 2\Plp 9
Ismar Silveira
 
PPTX
The definitive guide to java agents
Rafael Winterhalter
 
Java concurrency
Hithem Ahmed
 
Byte code field report
Rafael Winterhalter
 
Virtual Separation of Concerns
chk49
 
Java Fundamentals
Shalabh Chaudhary
 
More on Classes and Objects
Payel Guria
 
C# 6.0 - April 2014 preview
Paulo Morgado
 
Lambda Functions in Java 8
Ganesh Samarthyam
 
Java Tutorial
Akash Pandey
 
Lecture 7, c++(complete reference,herbet sheidt)chapter-17.
Abu Saleh
 
Java Notes
Sreedhar Chowdam
 
Presentation to java
Ganesh Chittalwar
 
Java Programming - 05 access control in java
Danairat Thanabodithammachari
 
Operator overload rr
Dhivya Shanmugam
 
Shiksharth com java_topics
Rajesh Verma
 
Clean code slide
Anh Huan Miu
 
clean code book summary - uncle bob - English version
saber tabatabaee
 
Java 10, Java 11 and beyond
Rafael Winterhalter
 
Virtual Separation of Concerns (2011 Update)
chk49
 
E:\Plp 2009 2\Plp 9
Ismar Silveira
 
The definitive guide to java agents
Rafael Winterhalter
 

Similar to Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education (20)

DOCX
Resume_Vishal Sharma_9 months experience
vishal sharma
 
PDF
4CS4-25-Java-Lab-Manual.pdf
amitbhachne
 
PPTX
Static code analysis: what? how? why?
Andrey Karpov
 
PDF
When develpment met test(shift left testing)
SangIn Choung
 
DOC
Resume
Rana Singh
 
DOCX
Sarathi_Resume_June 2016
Sarathi Thangavel
 
DOC
Aditya java nov_2015
Aditya Bhardwaj
 
DOC
Saurav_Kumar
Saurav Kumar
 
PPTX
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Comunidade NetPonto
 
PPTX
Machine Learning for .NET Developers - ADC21
Gülden Bilgütay
 
PDF
Online examination documentation
Wakimul Alam
 
DOC
Archana Verma_Resume
Archana Verma
 
DOCX
Datastage developer Resume
Mallikarjuna P
 
DOCX
MANUAL TEST ENGINEER
sharanling majge
 
DOCX
MANUAL TEST ENGINEER
sharanling majge
 
DOC
Vijay Mishra
vijay Mishra
 
PPTX
DataScience SG | Undergrad Series | 26th Sep 19
Yong Siang (Ivan) Tan
 
DOCX
My_Resume_Thilan_Peiris-Latest
chinthi
 
PDF
IRJET- Unabridged Review of Supervised Machine Learning Regression and Classi...
IRJET Journal
 
Resume_Vishal Sharma_9 months experience
vishal sharma
 
4CS4-25-Java-Lab-Manual.pdf
amitbhachne
 
Static code analysis: what? how? why?
Andrey Karpov
 
When develpment met test(shift left testing)
SangIn Choung
 
Resume
Rana Singh
 
Sarathi_Resume_June 2016
Sarathi Thangavel
 
Aditya java nov_2015
Aditya Bhardwaj
 
Saurav_Kumar
Saurav Kumar
 
Testes? Mas isso não aumenta o tempo de projecto? Não quero...
Comunidade NetPonto
 
Machine Learning for .NET Developers - ADC21
Gülden Bilgütay
 
Online examination documentation
Wakimul Alam
 
Archana Verma_Resume
Archana Verma
 
Datastage developer Resume
Mallikarjuna P
 
MANUAL TEST ENGINEER
sharanling majge
 
MANUAL TEST ENGINEER
sharanling majge
 
Vijay Mishra
vijay Mishra
 
DataScience SG | Undergrad Series | 26th Sep 19
Yong Siang (Ivan) Tan
 
My_Resume_Thilan_Peiris-Latest
chinthi
 
IRJET- Unabridged Review of Supervised Machine Learning Regression and Classi...
IRJET Journal
 
Ad

More from ECAM Brussels Engineering School (20)

PDF
Introduction à la formation Digitalent
ECAM Brussels Engineering School
 
PDF
Programmation de systèmes embarqués : Internet of Things : système connecté e...
ECAM Brussels Engineering School
 
PDF
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
ECAM Brussels Engineering School
 
PDF
Programmation de systèmes embarqués : Bus et périphériques de communication
ECAM Brussels Engineering School
 
PDF
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
ECAM Brussels Engineering School
 
PDF
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
ECAM Brussels Engineering School
 
PDF
Laboratoire de transmission numérique : Présentation du projet
ECAM Brussels Engineering School
 
PDF
Johnny-Five : Robotique et IoT en JavaScript
ECAM Brussels Engineering School
 
PDF
Introduction à LaTeX : le système de composition professionnel
ECAM Brussels Engineering School
 
PDF
Outils de gestion de projets
ECAM Brussels Engineering School
 
PDF
Développement informatique : Programmation graphique
ECAM Brussels Engineering School
 
PDF
Développement informatique : Algorithmique II : Techniques de recherche en in...
ECAM Brussels Engineering School
 
PDF
Intelligence Artificielle : Introduction à l'intelligence artificielle
ECAM Brussels Engineering School
 
PDF
Développement informatique : Programmation fonctionnelle, décorateur et génér...
ECAM Brussels Engineering School
 
PDF
Développement informatique : Programmation concurrente
ECAM Brussels Engineering School
 
PDF
Développement informatique : Algorithmique I : Récursion et arbre
ECAM Brussels Engineering School
 
PDF
Développement informatique : Chaines de caractères et expressions regulières
ECAM Brussels Engineering School
 
PDF
Développement informatique : Programmation réseau
ECAM Brussels Engineering School
 
PDF
Développement informatique : Gestion de projet, versioning, debugging, testin...
ECAM Brussels Engineering School
 
PDF
Python avancé : Qualité de code et convention de codage
ECAM Brussels Engineering School
 
Introduction à la formation Digitalent
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Internet of Things : système connecté e...
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Bus et périphériques de communication
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : BeagleBone Black et Linux embarqué
ECAM Brussels Engineering School
 
Programmation de systèmes embarqués : Introduction aux systèmes embarqués
ECAM Brussels Engineering School
 
Laboratoire de transmission numérique : Présentation du projet
ECAM Brussels Engineering School
 
Johnny-Five : Robotique et IoT en JavaScript
ECAM Brussels Engineering School
 
Introduction à LaTeX : le système de composition professionnel
ECAM Brussels Engineering School
 
Outils de gestion de projets
ECAM Brussels Engineering School
 
Développement informatique : Programmation graphique
ECAM Brussels Engineering School
 
Développement informatique : Algorithmique II : Techniques de recherche en in...
ECAM Brussels Engineering School
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
ECAM Brussels Engineering School
 
Développement informatique : Programmation fonctionnelle, décorateur et génér...
ECAM Brussels Engineering School
 
Développement informatique : Programmation concurrente
ECAM Brussels Engineering School
 
Développement informatique : Algorithmique I : Récursion et arbre
ECAM Brussels Engineering School
 
Développement informatique : Chaines de caractères et expressions regulières
ECAM Brussels Engineering School
 
Développement informatique : Programmation réseau
ECAM Brussels Engineering School
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
ECAM Brussels Engineering School
 
Python avancé : Qualité de code et convention de codage
ECAM Brussels Engineering School
 
Ad

Recently uploaded (20)

PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PPTX
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
The Future of Artificial Intelligence (AI)
Mukul
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Agentic AI in Healthcare Driving the Next Wave of Digital Transformation
danielle hunter
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Researching The Best Chat SDK Providers in 2025
Ray Fields
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 

Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education

  • 1. Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education Dr Sébastien Combéfis 1,2 Alexis Paques 2 1École Centrale des Arts et Métiers (ECAM) 2Computer Science and IT in Education (CSITEd) July 14, 2015 [CHESE 2015, Baltimore, MD, USA]
  • 2. Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.
  • 3. Context Automatic assessment of codes Programming learning platforms, MOOCs, higher education courses, competitions... Two major kinds of code assessment Unit testing frameworks Competition graders Platform for automatic assessment and “intelligent” feedback Suited for education and that helps learners 3
  • 4. Pythia framework Released as an open-source project http://www.pythia-project.org A unit testing framework... Functional tests on learners’ code ...and a competition grader Sandboxed environment with execution constraints Prototyped in 2012, used for a MOOC in Spring 2014 4
  • 5. Architecture The Pythia framework consists in three layers System layer Safe execution of jobs Task layer Feedbacks Problem layer Context and input/output structure Problem layer Task layer System layer 5
  • 6. System layer Front-ends communicate with the outside world Pools manage the safe execution of jobs Front-end Front-end Front-end Queue Pool Pool 6
  • 7. Job execution Sandbox uses UML with trimmed-down version of ArchLinux The VM boots in under one second A job has an environment and a task filesystem Constraints can be added to the VM (time, memory and output) { "environment": "python", "taskfs": "hello-world-python.sfs", "limits": { "time": 60, "memory": 32, "disk": 50, "output": 1024 } } 7
  • 8. Problem example A problem combines several tasks and adds a context 8
  • 10. Unit Testing-Based Grading Different kinds of tasks are possible Examine stdout, evaluate time complexity, run unit tests... Unit testing is for developers Feedback is related to the specification of the function Feedback for learners is related to the problem to be solved 10
  • 11. Main executable I 1 Preprocess Integrates code snippets from learners into skeletons 2 Compile Analyses statically the code and compiles it 3 Generate Generates tests sets and saves them to a file 11
  • 12. Main executable II 4 Execute Executes learner’s code against tests sets, generates data 5 Postprocess Analyses generated data, and produces analysis results 6 Feedback Generates feedbacks 12
  • 13. Configuration-based definition { "q1": { "argc": 2, "predefined": { "argv": [{ "data": "(10, 5)", "feedback": { "10": "Have you summed the 2nd parameter?", "5": "Have you summed the 1st parameter?" } }, { "data": "(7, 15)" }, { "data": "(-1, 2)", "feedback": { "*": "Have considered negative parameter?", } }, { "data": "(12, 0)" }] }, "random": { "n": 10, "args": ["int(-20,20)", "int(-20,20)"] }, "code": "def sum(a, b):n return a + b" } } 13
  • 14. Importance of feedback Predefined tests must cover errors often made by learners Feedback should be related to the problem being solved “Your code failed for the input a = 10, b = 5. The expected result is 15 and your code produced 10. Have you summed the 2nd parameter?” 14
  • 15. Visual feedback Visual feedback to be interpreted by the learner 15
  • 16. Conclusion Pythia is an open-source platform containing a unit testing-based grader specifically designed for education Ongoing work Definition and specification of new kinds of tasks Development of Pythia Studio and Pythia LMS Future work Explore use of other kinds of code checks Mining code to identify common errors to extract feedback 16