TY - GEN
T1 - A Code-Driven Exploration of Key C Language Concepts in a CS1 Class
AU - Kerschbaumer, David
AU - Steinmaurer, Alexander
AU - Gütl, Christian
PY - 2023
Y1 - 2023
N2 - In computer science education, various teaching and learning methods exist to teach novice students programming. However, students' source code primarily serves as the basis for grading. Usually, it is not considered to identify key concepts and skills required to complete the course and understand the student's learning process. This paper presents a system that automatically analyzes source code and identifies the most relevant concepts for first-semester students to pass a university-level programming course. This system uses different tools to detect errors and vulnerabilities, calculate metrics, and generate 55 code-related features from the students' source codes. The source code submissions of 1,346 students in two cohorts have been considered. Further, an expert study evaluated which of those features can be assigned to concrete programming concepts and how relevant these concepts are for programming education. Furthermore, we used machine learning methods to analyze the most challenging concepts, where students tend to produce the highest number of errors during their learning process. Our findings indicate that understanding and applying dynamic memory significantly impacts the students' course success. This study provides empirical evidence of the most important programming concepts in C within the CS1 course. Educators can use these results to optimize teaching materials and increase assistance for challenging and crucial concepts, which might reduce the student dropout rate. Our approach further shows how a code-driven approach can be used to analyze a university-level programming course and get insights into its academic success.
AB - In computer science education, various teaching and learning methods exist to teach novice students programming. However, students' source code primarily serves as the basis for grading. Usually, it is not considered to identify key concepts and skills required to complete the course and understand the student's learning process. This paper presents a system that automatically analyzes source code and identifies the most relevant concepts for first-semester students to pass a university-level programming course. This system uses different tools to detect errors and vulnerabilities, calculate metrics, and generate 55 code-related features from the students' source codes. The source code submissions of 1,346 students in two cohorts have been considered. Further, an expert study evaluated which of those features can be assigned to concrete programming concepts and how relevant these concepts are for programming education. Furthermore, we used machine learning methods to analyze the most challenging concepts, where students tend to produce the highest number of errors during their learning process. Our findings indicate that understanding and applying dynamic memory significantly impacts the students' course success. This study provides empirical evidence of the most important programming concepts in C within the CS1 course. Educators can use these results to optimize teaching materials and increase assistance for challenging and crucial concepts, which might reduce the student dropout rate. Our approach further shows how a code-driven approach can be used to analyze a university-level programming course and get insights into its academic success.
U2 - 10.13140/RG.2.2.18964.07047
DO - 10.13140/RG.2.2.18964.07047
M3 - Conference paper
T3 - Lecture Notes in Networks and Systems
SP - 397
EP - 408
BT - Smart Mobile Communication & Artificial Intelligence
PB - Springer
T2 - 15th IMCL Conference
Y2 - 9 November 2023 through 10 November 2023
ER -