30 Days After Introducing Programming: Which of My Students Are Likely to Fail?
Resumo
Predictors to identify whether a student will succeed or fail in introductory programming courses have been provided by previous research. However, they rely on time-consuming aptitude tests and surveys. This way, setting, executing, and replicating these studies is hard and increase the professor effort. Other predictors rely on automatic procedures, but they either do not identify the failing students early or do not provide high effectiveness. To minimize these problems, we propose a strategy to early predict the potential failing students during introductory programming courses automatically, reducing effort and allowing professors to use it in every course. By having this set of students in the first days of the course, professors and mentors would have time to act and potentially avoid such failings. The strategy consists of three steps: the use of an online judge system; the collection of metrics from this system; and the use of a clustering algorithm. To evaluate our strategy, we conduct an empirical study regarding 358 freshmen students of 12 introductory programming courses. We consider the first 30 days of the course. From the group of students our strategy points as “likely to fail,” 80% of the students on average indeed fail.
Referências
Bergin, S. and Reilly, R. (2005). Programming: factors that influence success. In Proceedings of the 36th SIGCSE, pages 411–415.
Bumbacher, E., Sandes, A., Deutsch, A., and Blikstein, P. (2013). Student coding styles as predictors of help-seeking behavior. In Artificial Intelligence in Education, pages 856–859.
Cheang, B., Kurnia, A., Lim, A., and Oon, W.-C. (2003). On Automated Grading of Programming Assignments in an Academic Institution. Computers & Education, 41(2):121–131.
Costa, E., Fonseca, B., Santana, M., Araújo, F., and Rego, J. (2017). Evaluating the effectiveness of educational data mining techniques for early prediction of students’ academic failure in introductory programming courses. Computers in Human Behavior, 73:247–256.
da Silva, T. R., Medeiros, T. J., and da S. Aranha, E. H. (2014). Jogos digitais para ensino e aprendizagem de programação: uma revisão sistemática da literatura. In Proceedings of the XXV SBIE, pages 692–702.
Dehnadi, S. and Bornat, R. (2006). The camel has two humps.
Estey, A., Keuning, H., and Coady, Y. (2017). Automatically classifying students in need of support by detecting changes in programming behaviour. In Proceedings of the 48th SIGCSE, pages 189–194.
Harris, J. (2014). Testing Programming Aptitude in Introductory Programming Courses. Journal of Computing Sciences in Colleges, 30(2):149–156.
Hughes, J. L. and McNamara, W. J. (2014). IBM Programmer Aptitude Test.
Jenkins, T. (2002). On the Difficulty of Learning to Program. In Proceedings of the 3rd annual Conference of LTSN-ICS, pages 53–58.
Kinnunen, P. and Malmi, L. (2006). Why Students Drop out CS1 Course? In Proceedings of the 2nd ICER, pages 97–108.
Porter, L., Guzdial, M., McDowell, C., and Simon, B. (2013). Success in Introductory Programming: What Works? Communications of the ACM, 56(8):34–36.
Porter, L. and Zingaro, D. (2014). Importance of early performance in cs1: Two conflicting assessment stories. In Proceedings of the 45th SIGCSE, pages 295–300.
Porter, L., Zingaro, D., and Lister, R. (2014). Predicting student success using fine grain clicker data. In Proceedings of the 10th ICER, pages 51–58.
Santos, R., Pitangui, C., Vivas, A., and Assis, L. (2016). Análise de trabalhos sobre a aplicação de técnicas de mineração de dados educacionais na previsão de desempenho acadêmico. In Proceedings of the Workshops CBIE, pages 960–970.
Watson, C. and Li, F. W. B. (2014). Failure rates in introductory programming revisited. In Proceedings of the 19th ITiCSE, pages 39–44.
Watson, C., Li, F. W. B., and Godwin, J. L. (2013). Predicting performance in an introductory programming course by logging and analyzing student programming behavior. In Proceedings of the 13th ICALT, pages 319–323.
Witten, I. H. and Frank, E. (2005). Data Mining: Practical Machine Learning Tools and Techniques. Elsevier.
Yadin, A. (2011). Reducing the Dropout Rate in an Introductory Programming Course. ACM Inroads, 2(4):71–76.
