Static Analysis of Code along with Autograders

Abstract


This work aims to study and develop approaches to help students and instructors of introductory programming courses (CS1 courses) in universities. These courses, which have significant dropout rates, are increasingly relevant in the academic environment, being offered not only to computer science students but also in the STEM learning context. At this moment, we wish to use automated code graders in order to obtain and show feedback beyond the result if a program passes or not its test cases. In that regard, static analysis of code is being done with students’ solutions to exercises in an introductory programming course at UNICAMP searching for simple comprehension problems with some metrics. In a general analysis, there is student code that uses up to seven times more conditional statements than the official solution and the class average to the same exercise. This kind of feedback can alert both the teacher and the student that this programming pattern can lead to future problems. Furthermore, this research proposal also has the intent of applying the feedback alongside Active Learning, in order to stimulate discussion and elevate student engagement in the classroom. Moreover, with those interventions set, we also want to evaluate the impact in the teacher’s workload, expecting it to be reduced.

Link to the presentation video (in brazillian portuguese): https://youtu.be/ghBTMRN2jEQ

Keywords: CS1, Static analysis, Autograders

References

Saira Anwar. 2019. Impact of Educational Technology-Based Learning Environment on Students’ Achievement Goals, Motivational Constructs, and Engagement. In Proceedings of the 2019 ACM Conference on International Computing Education Research (Toronto ON, Canada) (ICER ’19). Association for Computing Machinery, New York, NY, USA, 321–322. https://doi.org/10.1145/3291279.3339441

C.C. Bonwell and J.A. Eison. 1991. Active Learning: Creating Excitement in the Classroom. Wiley. https://books.google.com.br/books?id=AW7uAAAAMAAJ

Yorah Bosse. 2020. Padrões de Dificuldades Relacionadas com o Aprendizado de Programação. Ph.D. Dissertation. Universidade de São Paulo.

Ricardo Caceffo, Breno de França, Guilherme Gama, Raysa Benatti, Tales Aparecida, Tania Caldas, and Rodolfo Azevedo. 2017. An Antipattern Documentation about Misconceptions related to an Introductory Programming Course in C. In Technical Report 17-15. Institute of Computing, University of Campinas, 42.

Ricardo Caceffo, Guilherme Gama, and Rodolfo Azevedo. 2018. Exploring Active Learning Approaches to Computer Science Classes. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education (Baltimore, Maryland, USA) (SIGCSE ’18). Association for Computing Machinery, New York, NY, USA, 922–927. https://doi.org/10.1145/3159450.3159585

Ricardo Caceffo, SteveWolfman, Kellogg S. Booth, and Rodolfo Azevedo. 2016. Developing a Computer Science Concept Inventory for Introductory Programming. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education (Memphis, Tennessee, USA) (SIGCSE ’16). Association for Computing Machinery, New York, NY, USA, 364–369. https://doi.org/10.1145/2839509.2844559

Margaret Ellis, Clifford A. Shaffer, and Stephen H. Edwards. 2019. Approaches for coordinating etextbooks, online programming practice, automated grading, and more into one course. SIGCSE 2019 Proceedings of the 50th ACM Technical Symposium on Computer Science Education (2019), 126–132. https://doi.org/10.1145/3287324.3287487

Leandro Galvão, David Fernandes, and Bruno Gadelha. 2016. Juiz online como ferramenta de apoio a uma metodologia de ensino híbrido em programação. Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação SBIE) 27, 1 (2016), 140. https://doi.org/10.5753/cbie.sbie.2016.140

Maurice H Halstead. 1972. Natural laws controlling algorithm structure? ACM Sigplan Notices 7, 2 (1972), 19–26.

Petri Ihantola and Andrew Petersen. 2019. Code complexity in introductory programming courses. In Proceedings of the 52nd Hawaii International Conference on System Sciences.

Inside Higher Ed. 2018. Autograder issues upset students at Berkeley. https://www.insidehighered.com/news/2018/11/30/autograder-issues-upsetstudents-berkeley. Acesso em 18/01/2021.

Aaron Keen and Kurt Mammen. 2015. Program decomposition and complexity in CS1. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education. 48–53.

Thomas J McCabe. 1976. A complexity measure. IEEE Transactions on software Engineering 4 (1976), 308–320.

James Prather, Raymond Pettit, Kayla McMurry, Alani Peters, John Homer, and Maxine Cohen. 2018. Metacognitive difficulties faced by novice programmers in automated assessment tools. ICER 2018 Proceedings of the 2018 ACM Conference on International Computing Education Research (2018), 41–50. https://doi.org/10.1145/3230977.3230981

Juha Sorva. 2012. Visual program simulation in introductory programming education. Aalto University.

Nghi Truong, Paul Roe, and Peter Bancroft. 2004. Static analysis of students’ Java programs. In Proceedings of the Sixth Australasian Conference on Computing Education-Volume 30. Citeseer, 317–325.

Henry M. Walker. 2017. ACM RETENTION COMMITTEE Retention of Students in Introductory Computing Courses: Curricular Issues and Approaches. ACM Inroads 8, 4 (Oct. 2017), 14–16. https://doi.org/10.1145/3151936
Published
2021-04-26
SILVA, Eryck; CACEFFO, Ricardo; AZEVEDO, Rodolfo. Static Analysis of Code along with Autograders. In: NEW IDEAS LAB - BRAZILIAN SYMPOSIUM ON COMPUTING EDUCATION (EDUCOMP), 1. , 2021, On-line. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 25-26. DOI: https://doi.org/10.5753/educomp_estendido.2021.14858.