Publications and Research

Document Type


Publication Date



Computer programming courses are gateway courses with low passing grades, which may result in student attrition and transfers out of engineering and computer science degrees. Barriers to success include a good understanding of programming concepts and the ability to apply those concepts to write viable computer programs. In this paper, we analyze the determinants of the transition from concepts to skills in computer programming courses using factor and cluster analysis. The purpose of this study is to answer the following questions related to computer programming teaching and learning: 1) Which are the correlations and interdependencies in student understanding of different computer programming concepts?; 2) Which are the cognitive challenges that students find when learning programming concepts?; 3) How the understanding of different programming concepts relate to practical skills in computer programming; 4) What determines a successful transition from understanding the concepts to the ability to write viable computer programs? After several computer programming concept assessments in this first Java Programming course, we grouped the students’ performance into seven different categories: assignment operators, repetition structures, selection structures, program design using methods, arrays, classes and Java syntax. Factor analysis identified two factors (components) grouping the interdependencies and correlations between programming concept categories. The first component correlated with the repetition and selection categories, and could be referred to as the “algorithmic” component. The second component correlated with the methods, arrays and assignment categories, and could be referred as the “structural” component. Student performance in conceptual categories related to the “algorithmic” factor was significantly better than in conceptual categories related to the “structural” factor. Cluster analysis showed that student performance in the “structural” conceptual component is predictive of the student’s ability to solve practical computer programming problems. We conclude that a strong emphasis in the structural components of computer programming (i.e. program design using methods, use of the assignment operator, and use of data structures like arrays) is necessary for a successful transition from concepts to skills in computer programming courses.


Cabo, C. (2014, June), Transition from Concepts to Practical Skills in Computer Programming Courses: Factor and Cluster Analysis Paper presented at 2014 ASEE Annual Conference & Exposition, Indianapolis, Indiana. 10.18260/1-2--23213 © 2014 American Society for Engineering Education.



To view the content in your browser, please download Adobe Reader or, alternately,
you may Download the file to your hard drive.

NOTE: The latest versions of Adobe Reader do not support viewing PDF files within Firefox on Mac OS and if you are using a modern (Intel) Mac, there is no official plugin for viewing PDF files within the browser window.