错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A Code-Driven Exploration of Key C Language Concepts in a CS1 Class

  • David Kerschbaumer,
  • Alexander Steinmaurer,
  • Christian Gütl

摘要

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.