Milovancevic, DraganaBucev, MarioWojnarowski, MarcinChassot, SamuelKuncak, Viktor2024-03-072024-03-072024-07-222024-03-072024https://infoscience.epfl.ch/handle/20.500.14299/205841We report our first experience in enhancing automated grading in an undergraduate programming course using formal verification. In our experiment, we deploy a program verifier to check the equivalence between student submissions and reference solutions, alongside the existing, testing-based grading infrastructure. We find that we can use the conservative nature of program equivalence checking to our advantage. We were able to use such equivalence to differentiate student submissions according to their high-level program structure, in particular their recursion pattern, even when their input-output behaviour is identical. Consequently, we achieve (1) higher confidence in correctness of idiomatic solutions but also (2) more thorough assessment of solution landscape that reveals solutions beyond those envisioned by instructors.automated gradingfunctional programmingformal verificationFormal Autograding in a Classroom (Experience Report)text::report