Abstract
Static code analysis is widely used to detect code quality issues before execution. Thus, it can provide information that is important for improving programming skills. Such tools have been successfully used in teaching programming courses. In this paper we present algorithms for combining Formal Concept Analysis (FCA) with Pylint, a static code analysis tool, in order to detect and assess behavioral patterns in students’ programming styles. We design a generalized framework that can be subsequently used to analyze any category/subset of errors. We apply the approach for detecting common errors related to design by considering two scenarios that tackle object oriented design and increased code complexity. We argue how the results can be used to understand common mistakes and to improve the teaching content and methods.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
References
Bey, A., Jermann, P., Dillenbourg, P.: A comparison between two automatic assessment approaches for programming: an empirical study on MOOCs. J. Educ. Technol. Soc. 21(2), 259–272 (2018)
Cellier, P., Ducassé, M., Ferré, S., Ridoux, O.: Formal concept analysis enhances fault localization in software. In: Medina, R., Obiedkov, S. (eds.) ICFCA 2008. LNCS (LNAI), vol. 4933, pp. 273–288. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78137-0_20
Dekel, U.: Applications of concept lattices to code inspection and review, December 2002
Duquenne, V.: What can lattices do for teaching math. and education? vol. 331, January 2007
Düwel, S., Hesse, W.: Bridging the gap between use case analysis and class structure design by formal concept analysis (2001)
Edwards, S.H., Kandru, N., Rajagopal, M.B.: Investigating static analysis errors in student java programs. In: Proceedings of ICER 2017, pp. 65–73 (2017)
Ganter, B., Wille, R.: Formal Concept Analysis, Mathematical Foundation. Springer, Heidelberg (1999). https://doi.org/10.1007/978-3-642-59830-2
Godin, R., Mineau, G., Missaoui, R., St-Germain, M., Faraj, N.: Applying concept formation methods to software reuse. Int. J. Softw. Eng. Knowl. Eng. 5, 119–142 (1995)
Kis, L., Sacarea, C., Troanca, D.: FCA tools bundle-a tool that enables dyadic and triadic conceptual navigation. In: Proceedings of FCA4AI@ ECAI 2016, pp. 42–50 (2016)
Lajis, A., Baharudin, S.: A review of techniques in automatic programming assessment for practical skill test. J. Telecommun. Electron. Comput. Eng. 10(2), 109–113 (2018)
Lehmann, F., Wille, R.: A triadic approach to formal concept analysis. In: Ellis, G., Levinson, R., Rich, W., Sowa, J.F. (eds.) ICCS-ConceptStruct 1995. LNCS, vol. 954, pp. 32–43. Springer, Heidelberg (1995). https://doi.org/10.1007/3-540-60161-9_27
McConnell, S.: Code Complete, 2nd edn. Microsoft Press (2004)
Molnar, A., Motogna, S., Vlad, C.: Using static analysis tools to assist student project evaluation. In: Proceedings of EASEAI@ESEC/SIGSOFT FSE (2020)
Motogna, S., Cristea, D., Sotropa, D., Molnar, A.J.: Formal concept analysis model for static code analysis. Carpathian J. Math. 37(3), 49–58 (2021). Special issue dedicated to the 60th anniversary of University of Baia Mare, Print Edition: ISSN 1584 - 2851. Online Edition: ISSN 1843 - 4401
Poshyvanyk, D., Marcus, A.: Combining formal concept analysis with information retrieval for concept location in source code. In: Proceedings of ICPC, pp. 37–48 (2007)
Priss, U.: Using FCA to analyse how students learn to program. In: Cellier, P., Distel, F., Ganter, B. (eds.) ICFCA 2013. LNCS (LNAI), vol. 7880, pp. 216–227. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-38317-5_14
Priss, U.: A preliminary semiotic-conceptual analysis of a learning management system. Proc. Comput. Sci. 176, 3702–3709 (2020)
Pylint Documentation. http://pylint.pycqa.org/en/latest/user_guide/output.html. Accessed April 2021
Rudolph, S., Sacarea, C., Troanca, D.: Membership constraints in formal concept analysis. In: Proceedings of IJCAI 2015, pp. 3186–3192. AAAI Press (2015)
Rudolph, S., Săcărea, C., Troancă, D.: Towards a navigation paradigm for triadic concepts. In: Baixeries, J., Sacarea, C., Ojeda-Aciego, M. (eds.) ICFCA 2015. LNCS (LNAI), vol. 9113, pp. 252–267. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-19545-2_16
Schleimer, S., Wilkerson, D.S., Aiken, A.: Winnowing: local algorithms for document fingerprinting. In: Proceedings of ACM SIGMOD, pp. 76–85 (2003)
Stanford MOSS Home. https://theory.stanford.edu/~aiken/moss/. Accessed April 2021
Striewe, M., Goedicke, M.: A review of static analysis approaches for programming exercises. In: Kalz, M., Ras, E. (eds.) CAA 2014. CCIS, vol. 439, pp. 100–113. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-08657-6_10
Tilley, T., Cole, R., Becker, P., Eklund, P.: A survey of formal concept analysis support for software engineering activities. In: Ganter, B., Stumme, G., Wille, R. (eds.) Formal Concept Analysis. LNCS (LNAI), vol. 3626, pp. 250–271. Springer, Heidelberg (2005). https://doi.org/10.1007/11528784_13
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Cristea, D., Şotropa, D., Molnar, AJ., Motogna, S. (2021). On the Use of FCA Models in Static Analysis Tools to Detect Common Errors in Programming. In: Braun, T., Gehrke, M., Hanika, T., Hernandez, N. (eds) Graph-Based Representation and Reasoning. ICCS 2021. Lecture Notes in Computer Science(), vol 12879. Springer, Cham. https://doi.org/10.1007/978-3-030-86982-3_1
Download citation
DOI: https://doi.org/10.1007/978-3-030-86982-3_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-86981-6
Online ISBN: 978-3-030-86982-3
eBook Packages: Computer ScienceComputer Science (R0)