SlideShare a Scribd company logo
1 of 14
Download to read offline
Boosting individual feedback
with AutoFeedback
April 29th
, 2021
Who am I?
● Lecturer in Computer Science at Aston University
● I teach
○ Y1 Java Programming
○ Y2 Team Project
● I do research on software engineering (i.e. making better software):
○ Automating software testing
○ Creating better notations to describe what the system should do
● I am one of the Directors at Beautiful Canoe:
○ Not-for-profit social enterprise at Aston (students develop projects here!)
○ https://beautifulcanoe.com/
Motivation for automated code feedback in CS1OOP
● CS1OOP runs through the whole year:
○ Term 1 - intro to programming with Processing (https://processing.org/)
○ Term 2 - object-oriented programming with Java
○ Labs supported by 1 staff member for each 20-30 students
● Hands-on labs each week:
○ Students need to know if they need to fix their code
○ Lecturers need to know what parts of the lab are perceived as difficult
● Manual code feedback limitations:
○ Manually going through hundreds of submissions each week would delay feedback
○ Late feedback may not be useful!
● Automation helps students self-diagnose and staff give faster feedback:
○ The tool can check your code 24/7, and be 100% consistent
○ You can share the results with staff, to identify issues faster
Challenges involved
● Submitted code may have bugs - they shouldn't break the server!
● The platform needs to integrate with real tools
○ Professionals use IDEs like Eclipse or IntelliJ to develop their programs
○ Commercial solutions for automated feedback tend to force students to use web-based
code editors, which are not as powerful as the above IDEs
● Submission should be easy for first-time programmers
○ Shouldn't have to learn Git just to send your first program
● The platform needs to support multiple feedback loops:
○ Based on feedback, students will refine their code and re-submit
○ When stuck, students will share their results with staff
○ Based on student feedback, lecturers will refine automated checks and lab worksheets
○ The platform is continuously improved based on the student experience
AutoFeedback - our house-grown solution
● We did not find any
commercial option
which ticked all
these boxes
● We made our own:
AutoFeedback
● Piloted in term 2 of
CS1OOP this year
● Processed more
than 18,000
submissions!
AutoFeedback is open source - get the code at https://gitlab.com/autofeedback/
AutoFeedback - how does a student submit code?
1. Download the starting code
from our virtual learning
environment (Blackboard)
2. Open the code with your
IDE (e.g. Eclipse or IntelliJ)
3. Go through the lab
worksheet
4. Right-click on a special file
and click on "Submit to
AutoFeedback" (two clicks!)
AutoFeedback - how does a student see feedback? (I)
● The submission process will
ZIP your code and send it
to AutoFeedback
○ AF queues submissions: if we
get many at once, you will
just wait a bit longer!
● It also opens a browser tab
that will eventually refresh
with the results
● Keep working on the
feedback and resubmitting!
● Ask staff if something is
unclear!
AutoFeedback - how does a student see feedback? (II)
● Each lab has its own
collection of tests, with:
○ Marks for passing the test
○ Feedback if passed
○ Feedback if failed
● Colors:
○ Passed: green
○ Crashed: yellow
○ Failed: green
● AF uses popular testing tools:
○ Maven
○ JUnit 5
○ Mockito
○ JavaParser
○ TestFX
AutoFeedback - how is it made?
● AutoFeedback is a system, not just one tool!
● AF has two main parts:
○ The AutoFeedback website - written in PHP using the Laravel web framework
■ Runs 24/7 inside a server in Aston, with automated backups and system upgrades
○ The AutoFeedback Maven plugin - written in Java
■ Runs from the IDE in your computer - submits your code and opens the browser tab
AutoFeedback - how is the website made? (I)
● Remember the risks around letting buggy code crash our server?
● To protect against that, we use "containerization" with Docker:
○ Each container is effectively running as if they were on a separate computer
○ We can impose CPU/disk/memory limits on containers - each submission gets:
■ Half a CPU core, for up to 10 minutes
■ 100MB of disk space - gets erased automatically after marking
■ 512MB of memory
● We use containers for all the other parts of the AF website, too
○ Containers ensure the website is set up exactly the same everywhere
○ No more "but it works on my machine!" :-)
AutoFeedback - how is the website made? (II)
● Our Docker containers:
○ nginx is the web server - it receives
HTTP(S) connections and serves static
files (CSS, JS, images) directly.
○ "app" is the application server - it renders
web pages and schedules jobs to process
student code into a queue.
○ The "default-worker"s process non-Java
background jobs coming from "app" (e.g.
marking or importing Blackboard users).
○ The "java-worker"s run student code
under CPU/RAM/disk limits.
○ We use MariaDB for storing data, and
Redis for storing push notifications and
the job queue.
○ Laravel Echo delivers push notifications.
AutoFeedback - how is the website kept up to date?
● We use the Git version control system to track all our changes to AF
● The AF code is hosted in Gitlab: all changes undergo automated tests
○ This is known as Continuous Integration (CI)
● If the code passes all tests, it is automatically deployed in the server:
○ This is known as Continuous Delivery (CD)
○ CD prevents breaking the server due to a mistake doing some manual upgrade step
AutoFeedback - what is next?
● Supporting other languages besides Java:
○ Planned redesign around the Kubernetes orchestration platform
○ Could support anything that produces a JUnit XML file (there
are testing tools like that for PHP, JavaScript, Python…)
● Improving the feedback:
○ Allowing students to ask questions in AutoFeedback if it's not clear enough
○ Integrating videos on top of text for feedback
● Showing lecturers the most common mistakes students make
● Supporting "micro-assessments" with code written from the website
○ Good for first-time programmers doing very short programs
○ May be useful for the first few weeks!
Thank you!
@antoniogado
a.garcia-dominguez@aston.ac.uk

More Related Content

What's hot

Automated Performance Testing
Automated Performance TestingAutomated Performance Testing
Automated Performance TestingLars Thorup
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated TestingLars Thorup
 
Dig1108C Lesson 1 Fall 2014
Dig1108C Lesson 1 Fall 2014Dig1108C Lesson 1 Fall 2014
Dig1108C Lesson 1 Fall 2014David Wolfpaw
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Binary Studio
 
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptx
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptxIndore MuleSoft Meetup #5 April 2022 MDynamics 65.pptx
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptxIndoreMulesoftMeetup
 
RubyConfLT2012: Legacy / long running projects
RubyConfLT2012: Legacy / long running projectsRubyConfLT2012: Legacy / long running projects
RubyConfLT2012: Legacy / long running projectsVidmantas Kabošis
 
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projects
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projectsDrupalGov 2017: Testing any day: guide to end to end test driven Drupal projects
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projectsVladimir Roudakov
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmerClaudia Rosu
 

What's hot (9)

Automated Performance Testing
Automated Performance TestingAutomated Performance Testing
Automated Performance Testing
 
Introduction to Automated Testing
Introduction to Automated TestingIntroduction to Automated Testing
Introduction to Automated Testing
 
Dig1108C Lesson 1 Fall 2014
Dig1108C Lesson 1 Fall 2014Dig1108C Lesson 1 Fall 2014
Dig1108C Lesson 1 Fall 2014
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptx
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptxIndore MuleSoft Meetup #5 April 2022 MDynamics 65.pptx
Indore MuleSoft Meetup #5 April 2022 MDynamics 65.pptx
 
RubyConfLT2012: Legacy / long running projects
RubyConfLT2012: Legacy / long running projectsRubyConfLT2012: Legacy / long running projects
RubyConfLT2012: Legacy / long running projects
 
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projects
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projectsDrupalGov 2017: Testing any day: guide to end to end test driven Drupal projects
DrupalGov 2017: Testing any day: guide to end to end test driven Drupal projects
 
The art of being an agile programmer
The art of being an agile programmerThe art of being an agile programmer
The art of being an agile programmer
 
Netfabb tutorials
Netfabb tutorialsNetfabb tutorials
Netfabb tutorials
 

Similar to Boosting individual feedback with AutoFeedback

Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentationDrew Hannay
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesBethmi Gunasekara
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Giovanni Toraldo
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java CompilerIRJET Journal
 
Continuous Integration In Php
Continuous Integration In PhpContinuous Integration In Php
Continuous Integration In PhpWilco Jansen
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous IntegrationHùng Nguyễn Huy
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile ReleasesDrew Hannay
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...dcieslak
 
Parallel development of Web Apps | Codesushi - Gliwice 2017
Parallel development of Web Apps | Codesushi - Gliwice  2017Parallel development of Web Apps | Codesushi - Gliwice  2017
Parallel development of Web Apps | Codesushi - Gliwice 2017Krzysztof (Chris) Ozog
 
Clean application development tutorial
Clean application development tutorialClean application development tutorial
Clean application development tutorialAdam Culp
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoSzczepan Faber
 
How to keep modules up to date
How to keep modules up to dateHow to keep modules up to date
How to keep modules up to dateThomas Fleck
 
Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Maritime DevCon
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software EngineeringGeorg Buske
 
Clean application development (talk)
Clean application development (talk)Clean application development (talk)
Clean application development (talk)Adam Culp
 
How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...Max Barrass
 
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack Suren Konathala
 

Similar to Boosting individual feedback with AutoFeedback (20)

Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
Electron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologiesElectron JS | Build cross-platform desktop applications with web technologies
Electron JS | Build cross-platform desktop applications with web technologies
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
 
Review Paper on Online Java Compiler
Review Paper on Online Java CompilerReview Paper on Online Java Compiler
Review Paper on Online Java Compiler
 
Continuous Integration In Php
Continuous Integration In PhpContinuous Integration In Php
Continuous Integration In Php
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases3x3: Speeding Up Mobile Releases
3x3: Speeding Up Mobile Releases
 
3x3 Speeding Up Mobile Releases
3x3 Speeding Up Mobile Releases3x3 Speeding Up Mobile Releases
3x3 Speeding Up Mobile Releases
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
 
Parallel development of Web Apps | Codesushi - Gliwice 2017
Parallel development of Web Apps | Codesushi - Gliwice  2017Parallel development of Web Apps | Codesushi - Gliwice  2017
Parallel development of Web Apps | Codesushi - Gliwice 2017
 
Clean application development tutorial
Clean application development tutorialClean application development tutorial
Clean application development tutorial
 
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and MockitoQCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
QCon'17 talk: CI/CD at scale - lessons from LinkedIn and Mockito
 
How to keep modules up to date
How to keep modules up to dateHow to keep modules up to date
How to keep modules up to date
 
Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"Eric tucker - Eliminating "Over the Fence"
Eric tucker - Eliminating "Over the Fence"
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software Engineering
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Clean application development (talk)
Clean application development (talk)Clean application development (talk)
Clean application development (talk)
 
How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...
 
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack
Introducing the JAQ (Java, Angular, Sql/NoSQL) Stack
 

More from Antonio García-Domínguez

MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...Antonio García-Domínguez
 
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...Antonio García-Domínguez
 
MODELS 2019: Querying and annotating model histories with time-aware patterns
MODELS 2019: Querying and annotating model histories with time-aware patternsMODELS 2019: Querying and annotating model histories with time-aware patterns
MODELS 2019: Querying and annotating model histories with time-aware patternsAntonio García-Domínguez
 
Tips and resources for publication-grade figures and tables
Tips and resources for publication-grade figures and tablesTips and resources for publication-grade figures and tables
Tips and resources for publication-grade figures and tablesAntonio García-Domínguez
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
MRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsMRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsAntonio García-Domínguez
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLAntonio García-Domínguez
 
OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?Antonio García-Domínguez
 
Developing a new Epsilon Language through Annotations: TestLang
Developing a new Epsilon Language through Annotations: TestLangDeveloping a new Epsilon Language through Annotations: TestLang
Developing a new Epsilon Language through Annotations: TestLangAntonio García-Domínguez
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...Antonio García-Domínguez
 
Software libre para la integración de información en la Universidad de Cádiz
Software libre para la integración de información en la Universidad de CádizSoftware libre para la integración de información en la Universidad de Cádiz
Software libre para la integración de información en la Universidad de CádizAntonio García-Domínguez
 

More from Antonio García-Domínguez (17)

MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
MODELS 2022 Journal-First presentation: ETeMoX - explaining reinforcement lea...
 
MODELS 2022 Picto Web tool demo
MODELS 2022 Picto Web tool demoMODELS 2022 Picto Web tool demo
MODELS 2022 Picto Web tool demo
 
EduSymp 2022 slides (The Epsilon Playground)
EduSymp 2022 slides (The Epsilon Playground)EduSymp 2022 slides (The Epsilon Playground)
EduSymp 2022 slides (The Epsilon Playground)
 
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
History-Aware Explanations: Towards Enabling Human-in-the-Loop in Self-Adapti...
 
MODELS 2019: Querying and annotating model histories with time-aware patterns
MODELS 2019: Querying and annotating model histories with time-aware patternsMODELS 2019: Querying and annotating model histories with time-aware patterns
MODELS 2019: Querying and annotating model histories with time-aware patterns
 
Tips and resources for publication-grade figures and tables
Tips and resources for publication-grade figures and tablesTips and resources for publication-grade figures and tables
Tips and resources for publication-grade figures and tables
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
MRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph modelsMRT 2018: reflecting on the past and the present with temporal graph models
MRT 2018: reflecting on the past and the present with temporal graph models
 
Hawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQLHawk: indexado de modelos en bases de datos NoSQL
Hawk: indexado de modelos en bases de datos NoSQL
 
Software and product quality for videogames
Software and product quality for videogamesSoftware and product quality for videogames
Software and product quality for videogames
 
OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?
 
Developing a new Epsilon Language through Annotations: TestLang
Developing a new Epsilon Language through Annotations: TestLangDeveloping a new Epsilon Language through Annotations: TestLang
Developing a new Epsilon Language through Annotations: TestLang
 
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
MoDELS'16 presentation: Integration of a Graph-Based Model Indexer in Commerc...
 
ECMFA 2016 slides
ECMFA 2016 slidesECMFA 2016 slides
ECMFA 2016 slides
 
BMSD 2015 slides (revised)
BMSD 2015 slides (revised)BMSD 2015 slides (revised)
BMSD 2015 slides (revised)
 
Elaboración de un buen póster científico
Elaboración de un buen póster científicoElaboración de un buen póster científico
Elaboración de un buen póster científico
 
Software libre para la integración de información en la Universidad de Cádiz
Software libre para la integración de información en la Universidad de CádizSoftware libre para la integración de información en la Universidad de Cádiz
Software libre para la integración de información en la Universidad de Cádiz
 

Recently uploaded

Congestive Cardiac Failure..presentation
Congestive Cardiac Failure..presentationCongestive Cardiac Failure..presentation
Congestive Cardiac Failure..presentationdeepaannamalai16
 
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQ-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQuiz Club NITW
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...DhatriParmar
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvRicaMaeCastro1
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...DhatriParmar
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17Celine George
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6Vanessa Camilleri
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...Nguyen Thanh Tu Collection
 
How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17Celine George
 
CHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxCHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxAneriPatwari
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operationalssuser3e220a
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQuiz Club NITW
 

Recently uploaded (20)

prashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Professionprashanth updated resume 2024 for Teaching Profession
prashanth updated resume 2024 for Teaching Profession
 
Congestive Cardiac Failure..presentation
Congestive Cardiac Failure..presentationCongestive Cardiac Failure..presentation
Congestive Cardiac Failure..presentation
 
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITWQ-Factor General Quiz-7th April 2024, Quiz Club NITW
Q-Factor General Quiz-7th April 2024, Quiz Club NITW
 
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
Blowin' in the Wind of Caste_ Bob Dylan's Song as a Catalyst for Social Justi...
 
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnvESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
ESP 4-EDITED.pdfmmcncncncmcmmnmnmncnmncmnnjvnnv
 
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
Beauty Amidst the Bytes_ Unearthing Unexpected Advantages of the Digital Wast...
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17
 
ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6ICS 2208 Lecture Slide Notes for Topic 6
ICS 2208 Lecture Slide Notes for Topic 6
 
Paradigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTAParadigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTA
 
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptxINCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
INCLUSIVE EDUCATION PRACTICES FOR TEACHERS AND TRAINERS.pptx
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
 
How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17How to Manage Buy 3 Get 1 Free in Odoo 17
How to Manage Buy 3 Get 1 Free in Odoo 17
 
CHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptxCHEST Proprioceptive neuromuscular facilitation.pptx
CHEST Proprioceptive neuromuscular facilitation.pptx
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 
Expanded definition: technical and operational
Expanded definition: technical and operationalExpanded definition: technical and operational
Expanded definition: technical and operational
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITWQ-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
Q-Factor HISPOL Quiz-6th April 2024, Quiz Club NITW
 

Boosting individual feedback with AutoFeedback

  • 1. Boosting individual feedback with AutoFeedback April 29th , 2021
  • 2. Who am I? ● Lecturer in Computer Science at Aston University ● I teach ○ Y1 Java Programming ○ Y2 Team Project ● I do research on software engineering (i.e. making better software): ○ Automating software testing ○ Creating better notations to describe what the system should do ● I am one of the Directors at Beautiful Canoe: ○ Not-for-profit social enterprise at Aston (students develop projects here!) ○ https://beautifulcanoe.com/
  • 3. Motivation for automated code feedback in CS1OOP ● CS1OOP runs through the whole year: ○ Term 1 - intro to programming with Processing (https://processing.org/) ○ Term 2 - object-oriented programming with Java ○ Labs supported by 1 staff member for each 20-30 students ● Hands-on labs each week: ○ Students need to know if they need to fix their code ○ Lecturers need to know what parts of the lab are perceived as difficult ● Manual code feedback limitations: ○ Manually going through hundreds of submissions each week would delay feedback ○ Late feedback may not be useful! ● Automation helps students self-diagnose and staff give faster feedback: ○ The tool can check your code 24/7, and be 100% consistent ○ You can share the results with staff, to identify issues faster
  • 4. Challenges involved ● Submitted code may have bugs - they shouldn't break the server! ● The platform needs to integrate with real tools ○ Professionals use IDEs like Eclipse or IntelliJ to develop their programs ○ Commercial solutions for automated feedback tend to force students to use web-based code editors, which are not as powerful as the above IDEs ● Submission should be easy for first-time programmers ○ Shouldn't have to learn Git just to send your first program ● The platform needs to support multiple feedback loops: ○ Based on feedback, students will refine their code and re-submit ○ When stuck, students will share their results with staff ○ Based on student feedback, lecturers will refine automated checks and lab worksheets ○ The platform is continuously improved based on the student experience
  • 5. AutoFeedback - our house-grown solution ● We did not find any commercial option which ticked all these boxes ● We made our own: AutoFeedback ● Piloted in term 2 of CS1OOP this year ● Processed more than 18,000 submissions! AutoFeedback is open source - get the code at https://gitlab.com/autofeedback/
  • 6. AutoFeedback - how does a student submit code? 1. Download the starting code from our virtual learning environment (Blackboard) 2. Open the code with your IDE (e.g. Eclipse or IntelliJ) 3. Go through the lab worksheet 4. Right-click on a special file and click on "Submit to AutoFeedback" (two clicks!)
  • 7. AutoFeedback - how does a student see feedback? (I) ● The submission process will ZIP your code and send it to AutoFeedback ○ AF queues submissions: if we get many at once, you will just wait a bit longer! ● It also opens a browser tab that will eventually refresh with the results ● Keep working on the feedback and resubmitting! ● Ask staff if something is unclear!
  • 8. AutoFeedback - how does a student see feedback? (II) ● Each lab has its own collection of tests, with: ○ Marks for passing the test ○ Feedback if passed ○ Feedback if failed ● Colors: ○ Passed: green ○ Crashed: yellow ○ Failed: green ● AF uses popular testing tools: ○ Maven ○ JUnit 5 ○ Mockito ○ JavaParser ○ TestFX
  • 9. AutoFeedback - how is it made? ● AutoFeedback is a system, not just one tool! ● AF has two main parts: ○ The AutoFeedback website - written in PHP using the Laravel web framework ■ Runs 24/7 inside a server in Aston, with automated backups and system upgrades ○ The AutoFeedback Maven plugin - written in Java ■ Runs from the IDE in your computer - submits your code and opens the browser tab
  • 10. AutoFeedback - how is the website made? (I) ● Remember the risks around letting buggy code crash our server? ● To protect against that, we use "containerization" with Docker: ○ Each container is effectively running as if they were on a separate computer ○ We can impose CPU/disk/memory limits on containers - each submission gets: ■ Half a CPU core, for up to 10 minutes ■ 100MB of disk space - gets erased automatically after marking ■ 512MB of memory ● We use containers for all the other parts of the AF website, too ○ Containers ensure the website is set up exactly the same everywhere ○ No more "but it works on my machine!" :-)
  • 11. AutoFeedback - how is the website made? (II) ● Our Docker containers: ○ nginx is the web server - it receives HTTP(S) connections and serves static files (CSS, JS, images) directly. ○ "app" is the application server - it renders web pages and schedules jobs to process student code into a queue. ○ The "default-worker"s process non-Java background jobs coming from "app" (e.g. marking or importing Blackboard users). ○ The "java-worker"s run student code under CPU/RAM/disk limits. ○ We use MariaDB for storing data, and Redis for storing push notifications and the job queue. ○ Laravel Echo delivers push notifications.
  • 12. AutoFeedback - how is the website kept up to date? ● We use the Git version control system to track all our changes to AF ● The AF code is hosted in Gitlab: all changes undergo automated tests ○ This is known as Continuous Integration (CI) ● If the code passes all tests, it is automatically deployed in the server: ○ This is known as Continuous Delivery (CD) ○ CD prevents breaking the server due to a mistake doing some manual upgrade step
  • 13. AutoFeedback - what is next? ● Supporting other languages besides Java: ○ Planned redesign around the Kubernetes orchestration platform ○ Could support anything that produces a JUnit XML file (there are testing tools like that for PHP, JavaScript, Python…) ● Improving the feedback: ○ Allowing students to ask questions in AutoFeedback if it's not clear enough ○ Integrating videos on top of text for feedback ● Showing lecturers the most common mistakes students make ● Supporting "micro-assessments" with code written from the website ○ Good for first-time programmers doing very short programs ○ May be useful for the first few weeks!