SlideShare a Scribd company logo
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

PDF
Autograder presentation
PPTX
Crack mcts.com
PPTX
Project management frameworks for software developing
PDF
Features of go
PPTX
Елена Панина - Drupal performance testing. Тестирование производительности, м...
PDF
Extreme Programming - to the next-level
PDF
Fast end-to-end-tests
PDF
Error handling
Autograder presentation
Crack mcts.com
Project management frameworks for software developing
Features of go
Елена Панина - Drupal performance testing. Тестирование производительности, м...
Extreme Programming - to the next-level
Fast end-to-end-tests
Error handling

What's hot (9)

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

Similar to Boosting individual feedback with AutoFeedback (20)

PDF
OpenSubmit - How to grade 1200 code submissions
DOC
Project Report of Faculty feedback system
DOCX
Feedback System in PHP
PPTX
The Power of Feedback Loops
PDF
Automating Feedback & Assessment in WebLab
PDF
Software Development Practices.pdf
PPTX
phpca4pppt.pptx
PDF
Dealing with contributor overload - FOSS Backstage
PDF
Crucible
PDF
IRJET- Online Programming Assessment and Evaluation Platform in Education System
PDF
Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education
PDF
Feedback at scale with a little help of my algorithms
PDF
EduHPC-15 final paper
PDF
Webcat
ODP
Moodle Development Best Pracitces
PPTX
Generating_Automated_Feedback_To_Improve_Software_Testing_Quality
PDF
Supporting studio-based design courses with django-courseapp
PPT
An Innovative Approach to Using Web 2.0 in CS 1
PDF
Lean Engineering: How to make Engineering a full Lean UX partner
OpenSubmit - How to grade 1200 code submissions
Project Report of Faculty feedback system
Feedback System in PHP
The Power of Feedback Loops
Automating Feedback & Assessment in WebLab
Software Development Practices.pdf
phpca4pppt.pptx
Dealing with contributor overload - FOSS Backstage
Crucible
IRJET- Online Programming Assessment and Evaluation Platform in Education System
Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education
Feedback at scale with a little help of my algorithms
EduHPC-15 final paper
Webcat
Moodle Development Best Pracitces
Generating_Automated_Feedback_To_Improve_Software_Testing_Quality
Supporting studio-based design courses with django-courseapp
An Innovative Approach to Using Web 2.0 in CS 1
Lean Engineering: How to make Engineering a full Lean UX partner
Ad

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

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

Recently uploaded (20)

PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PPTX
Cell Types and Its function , kingdom of life
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Trump Administration's workforce development strategy
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PPTX
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
PPTX
Orientation - ARALprogram of Deped to the Parents.pptx
PPTX
GDM (1) (1).pptx small presentation for students
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
01-Introduction-to-Information-Management.pdf
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
RMMM.pdf make it easy to upload and study
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
Cell Structure & Organelles in detailed.
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
Cell Types and Its function , kingdom of life
Microbial disease of the cardiovascular and lymphatic systems
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Trump Administration's workforce development strategy
O7-L3 Supply Chain Operations - ICLT Program
STATICS OF THE RIGID BODIES Hibbelers.pdf
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
Orientation - ARALprogram of Deped to the Parents.pptx
GDM (1) (1).pptx small presentation for students
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
Module 4: Burden of Disease Tutorial Slides S2 2025
01-Introduction-to-Information-Management.pdf
FourierSeries-QuestionsWithAnswers(Part-A).pdf
RMMM.pdf make it easy to upload and study
Final Presentation General Medicine 03-08-2024.pptx
Cell Structure & Organelles in detailed.
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
2.FourierTransform-ShortQuestionswithAnswers.pdf

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!