Table of Contents
Fetching ...

Dodona: learn to code with a virtual co-teacher that supports active learning

Charlotte Van Petegem, Rien Maertens, Niko Strijbol, Jorg Van Renterghem, Felix Van der Jeugt, Bram De Wever, Peter Dawyndt, Bart Mesuere

TL;DR

Dodona addresses the challenge of scalable, timely feedback in programming education by combining automated code assessment, open content management, and rich learning analytics. Its virtual co-teacher model enables just-in-time feedback and multi-source learning through a Docker-based judge, a JSON feedback workflow, and an extensible plugin ecosystem. The accompanying case study of an introductory Python course demonstrates how active, online learning and analytics support improved engagement and learning outcomes while mitigating plagiarism. With broad adoption across hundreds of institutions and an open-source MIT license, Dodona demonstrates practical, scalable impact for computer programming education and ongoing opportunities for community-driven enhancement.

Abstract

Dodona (dodona.ugent.be) is an intelligent tutoring system for computer programming. It bridges the gap between assessment and learning by providing real-time data and feedback to help students learn better, teachers teach better and educational technology become more effective. We demonstrate how Dodona can be used as a virtual co-teacher to stimulate active learning and support challenge-based education in open and collaborative learning environments. We also highlight some of the opportunities (automated feedback, learning analytics, educational data mining) and challenges (scalable feedback, open internet exams, plagiarism) we faced in practice. Dodona is free for use and has more than 36 thousand registered users across many educational and research institutes, of which 15 thousand new users registered last year. Lowering the barriers for such a broad adoption was achieved by following best practices and extensible approaches for software development, authentication, content management, assessment, security and interoperability, and by adopting a holistic view on computer-assisted learning and teaching that spans all aspects of managing courses that involve programming assignments. The source code of Dodona is available on GitHub under the permissive MIT open-source license.

Dodona: learn to code with a virtual co-teacher that supports active learning

TL;DR

Dodona addresses the challenge of scalable, timely feedback in programming education by combining automated code assessment, open content management, and rich learning analytics. Its virtual co-teacher model enables just-in-time feedback and multi-source learning through a Docker-based judge, a JSON feedback workflow, and an extensible plugin ecosystem. The accompanying case study of an introductory Python course demonstrates how active, online learning and analytics support improved engagement and learning outcomes while mitigating plagiarism. With broad adoption across hundreds of institutions and an open-source MIT license, Dodona demonstrates practical, scalable impact for computer programming education and ongoing opportunities for community-driven enhancement.

Abstract

Dodona (dodona.ugent.be) is an intelligent tutoring system for computer programming. It bridges the gap between assessment and learning by providing real-time data and feedback to help students learn better, teachers teach better and educational technology become more effective. We demonstrate how Dodona can be used as a virtual co-teacher to stimulate active learning and support challenge-based education in open and collaborative learning environments. We also highlight some of the opportunities (automated feedback, learning analytics, educational data mining) and challenges (scalable feedback, open internet exams, plagiarism) we faced in practice. Dodona is free for use and has more than 36 thousand registered users across many educational and research institutes, of which 15 thousand new users registered last year. Lowering the barriers for such a broad adoption was achieved by following best practices and extensible approaches for software development, authentication, content management, assessment, security and interoperability, and by adopting a holistic view on computer-assisted learning and teaching that spans all aspects of managing courses that involve programming assignments. The source code of Dodona is available on GitHub under the permissive MIT open-source license.
Paper Structure (19 sections, 13 figures, 1 table)

This paper contains 19 sections, 13 figures, 1 table.

Figures (13)

  • Figure 1: Main course page (administrator view) showing some series with deadlines, reading activities and programming assignments in its learning path. At any point in time, students can see their own progress through the learning path of the course. Teachers have some additional icons in the navigation bar (top) that lead to an overview of all students and their progress, an overview of all submissions for programming assignments, general learning analytics about the course, course management and a dashboard with questions from students in various stages from being answered (Figure \ref{['fig:questions']}). The red dot on the latter icon notifies that some student questions are still pending.
  • Figure 2: Outline of the procedure to automatically assess a student submission for a programming assignment. Dodona instantiates a Docker container (1) from the image linked to the assignment (or from the default image linked to the judge of the assignment) and loads the submission and its metadata (2), the judge linked to the assignment (3) and the assessment resources of the assignment (4) into the container. Dodona then launches the actual assessment, collects and bundles the generated feedback (5), and stores it into a database along with the submission and its metadata.
  • Figure 3: Dodona rendering of feedback generated by the judge that assessed a submission of the Python programming assignment "Curling". The judge split its feedback across three tabs, one for each function that needs to be implemented for this assignment: isinside, isvalid and score. All tests under the isinside and isvalid tabs passed, but 48 tests under the score tab failed as can be seen immediately from the badge in the tab header. Dodona also added a fourth tab "Code" that displays the source code of the submission with annotations added during automatic and/or manual assessment (Figure \ref{['fig:annotations']}). Green/red vertical lines on the left reflect the grouping of test cases into execution contexts (here each execution context contains a single test case). Dodona automatically highlighted the differences between the generated and expected return values of the first and third (failed) test case and the judge used unstructured HTML snippets to add a graphical representation (SVG) of the curling stone positions that are passed as arguments to the score function for these failed test cases. In addition to highlighting differences between the generated and expected return values of the first (failed) test case, the judge also added an unstructured text snippet that indicates that a tuple was expected (not a list).
  • Figure 4: Distributed content management model that allows to seamlessly integrate custom learning activities (reading activities and programming assignments with support for automated assessment) and judges (frameworks for automated assessment) into Dodona. Content creators manage their content in external git repositories, keep ownership over their content, control who can co-create, and set up webhooks to automatically synchronize any changes with the content as published on Dodona.
  • Figure 5: A student (Matilda) previously asked a question that has already been answered by her teacher (Miss Honey). Based on this response, the student is now asking a follow-up question that can be formatted using Markdown.
  • ...and 8 more figures