In this diploma thesis we try to find the answer to why students experience difficulties in introductory programming. We ask ourselves what causes most problems while trying to understand concepts in introductory programming, generating code and designing algorithms.
In the first section we introduce programming language Python as the first programming language being taught to students. We compare it with programming language Pascal and stress the advantages of Python that seem important in introductory programming. On the basis of reviewed scientific writings, we summarize some definitions and researches, which apply to introductory programming. While programming, beginners usually experience difficulties with understanding concepts that are completely different than those they are used to. Experience shows, that some concepts are easier to understand than others.
Most of the students at the Faculty of Education, University of Ljubljana, studying under the Two-Subject Teacher program - orientation computing, are not familiar with programming until they participate in a Introduction to Programming course. Student’s success rate on this course is very low and there is a belief among students that programming is difficult. Thus we conducted empirical research to help us identify critical problems, occurring while beginners learn to program. It turns out that the majority of problems arise from poor understanding of the mathematical background, Python programming language syntactic specifics, connecting subprograms into a working solution, usage of appropriate data structures and concepts, writing the solution algorithmically and parallel combining different programming constructs. In this diploma thesis we also introduce an example of analyzing a particular task, given to students in one of the exams, which students solved poorly. We connected the task with concepts being examined and, on the basis of analyzing the student’s solutions, found the causes and solutions for eliminating such problems.