Contemporary Learning Management Systems (LMS), notably Moodle, provide robust academic content delivery and engagement tracking but remain fundamentally deficient in one critical dimension: the assessment and analytics of practical coding skills. Existing analytics plugins such as IntelliBoard aggregate engagement data from course activities yet possess no mechanism to capture, evaluate, or visualize coding-specific performance metrics. This gap deprives educators of insight into how students write, debug, and iteratively improve code—competencies that are foundational to Computer Science and Engineering education. The present work introduces ExamNova, a dual-component system built atop Moodle LMS. The first component, CodeJudge, is a custom Moodle local plugin (local_codejudge) developed from the ground up. It embeds a feature-rich in-browser code editor based on the Ace editor library—supporting C, C++, Java, and Python—and routes student submissions to a secure Python Flask microservice. Code execution is sandboxed within Docker containers configured with strict resource limits: no network access, 128 MB memory cap, 0.5 CPU share, and a process limit, ensuring both security and reproducibility. The second component enhances the IntelliBoard analytics plugin by extending its data collection to CodeJudge tables via SQL, enabling dedicated coding analytics dashboards including per-student performance trends, language-wise usage statistics, question difficulty analysis, at-risk student identification, and competitive leaderboards. The integrated system is validated through functional testing, boundary-condition evaluation, and Docker security assessment, confirming accurate test-case evaluation, secure execution, and meaningful analytics generation.
Introduction
The text presents ExamNova, an extension to the Moodle learning management system designed to overcome its limitations in programming education. While Moodle supports general course management, it lacks native tools for code compilation, execution, test-case evaluation, and detailed tracking of student coding behavior. This makes it difficult for instructors to assess programming skills or identify struggling students effectively.
To solve this, ExamNova introduces a Docker-based CodeJudge plugin integrated directly into Moodle, along with enhanced analytics through IntelliBoard. Students can write and submit code in languages like C, C++, Java, and Python using an in-browser editor (Ace editor), while a secure Flask microservice executes the code inside isolated Docker containers with strict resource limits. The system evaluates submissions using test cases and records detailed performance data.
All coding activity is stored in structured database tables and logged through Moodle’s event system. IntelliBoard is extended to visualize coding-specific analytics such as success rates, attempt patterns, time per question, language usage, and at-risk student detection. The system follows a three-tier architecture (presentation, processing/judge, and data analytics) and ensures security, scalability, and integration within Moodle.
Conclusion
ExamNova successfully bridges the gap between LMS-based learning management and real-world coding assessment by embedding a Docker-sandboxed multi-language code judge directly within Moodle, coupled with a coding-specific analytics layer through IntelliBoard. The system demonstrates that secure, scalable, and pedagogically meaningful coding assessment is achievable entirely within an institutional LMS environment.
Future work includes plagiarism detection via MOSS or JPlag, an AI-powered hint system using LLM APIs, expanded language support for JavaScript, Rust, and Go, predictive analytics using machine learning on early coding metrics, and Kubernetes deployment for enterprise-scale scalability.
References
[1] V. Daza, R. Traver, and C. Vidal-Castro, \"Enhancing Moodle Insights: Leveraging Time Tracking Data Beyond Access Counts,\" IAIAI Letters on Learning Technology, vol. 3, no. 2, pp. 45–58, 2021.
[2] V. Daza and R. Traver, \"Exploring Differences in Time Spent Tracking: IntelliBoard vs Edwiser Reports in Moodle,\" IAIAI Letters on Learning Technology, vol. 4, no. 1, pp. 12–24, 2022.
[3] A. Bakharia and S. Dawson, \"Moodle for Learning Analytics and Institutional Research,\" IAIAI Journal of Educational Technology, vol. 18, pp. 88–102, 2020.
[4] A. Verbert, N. Manouselis, H. Drachsler, and E. Duval, \"Learning Analytics in Moodle: A Systematic Review,\" Computers and Education, Elsevier, vol. 132, pp. 1–30, 2018.
[5] C.-H. Chang, G.-H. Tzeng, and D.-C. Lin, \"Educational Data Mining and Learning Analytics in LMS,\" IEEE Transactions on Learning Technologies, vol. 10, no. 4, pp. 458–472, 2017.
[6] J. Grann and D. Bushway, \"Dashboard-Based Learning Analytics in Higher Education,\" Proc. Springer Learning Analytics Workshop, Berlin, pp. 34–48, 2016.
[7] Y.-C. Tsai, H.-Y. Chen, and J.-C. Wang, \"Container-Based Sandboxing for Online Code Judge Security,\" IEEE Access, vol. 7, pp. 105230–105242, 2019.
[8] M. Raja and S. Bhanu, \"Integrating a Code Evaluation Module in Moodle for Programming Courses,\" International Journal of Engineering Education, vol. 36, no. 5, pp. 1678–1690, 2020.
[9] M. Meftah, H. Ziani, and Z. Bakkoury, \"Improving Novice Programmer Experience with Browser-Based Code Editors,\" Proc. International Conference on Advanced Information Technology, Casablanca, pp. 113–118, 2021.
[10] D. Merkel, \"Docker: Lightweight Linux Containers for Consistent Development and Deployment,\" Linux Journal, vol. 2014, no. 239, pp. 2–8, 2014.