[feed] pefprints@pef.uni-lj.si | [feed] Atom [feed] RSS 1.0 [feed] RSS 2.0 |
  Logo Login | Create Account

Domain ontology of programming patterns in introductory programming courses

Matej Zapušek (2022) Domain ontology of programming patterns in introductory programming courses. PhD thesis.

Download (11Mb)


    Computer programming is one of the fundamental skills in computer science. It enables students to develop problem solving skills, algorithmic, analytical as well as abstract thinking and logical reasoning. This gives them an important advantage in today's technological world. Experience shows that beginners often find it difficult to acquire this knowledge because they lack strategic knowledge. This is because the traditional way of teaching programming emphasizes syntactic and semantic knowledge, which is not the biggest problem for beginners. The most difficult challenge for beginners is the process of developing a solution when they have to combine the functionalities of different programming constructs into a correct solution. Experts are very effective at this because they use a wide range of programming patterns that they have acquired through a long learning process. Programming patterns are abstract representations of solutions to recurring algorithmic problems encountered in programming and allow problem solving to be approached at a conceptual level. Incorporating these patterns into the learning process helps in learning general problem-solving strategies, enables the use of abstract concepts, helps in gaining a general understanding of the fundamentals of programming, and enables the writing or understanding of complex programs by assembling smaller, interconnected parts. Beginners learn most effectively from knowledge embedded in patterns when they are taught explicitly. This requires their formal representation. The latter provides a deeper insight into the processes of algorithmic problem solving. Despite the growing body of literature on programming patterns, there is a conspicuous lack of approaches to formalizing them. In this dissertation, we have developed a programming language-independent formalization of programming patterns that allows their declarative representation at different levels of abstraction. The declarative representation of a programming pattern describes its structure through its elements and the relations between them. The chosen level of abstraction, in turn, allows us to represent the parts of a programming pattern in arbitrary detail. Existing formalizations of programming patterns, such as block diagrams and abstract syntax trees, are based on procedural features of algorithms. This means that they focus on describing the execution order of instructions and implementation peculiarities in a concrete programming language, thus obscuring the structure of the programming pattern and consequently not providing declarative insight into the essential aspects of the design of the solution. The proposed formalization directly addresses the highlighted shortcomings of existing approaches by providing explicit insight into the structure of the pattern, thus providing a means to study and investigate the solution design process. The declarative nature of the representation of a pattern also provides the basis for realizing a modular approach to the composition of programming patterns from elementary to complex. Insight into the elements that make up a pattern and how they relate to each other allows the process of pattern construction to be followed more closely, supports the construction of complex patterns, and facilitates the application of knowledge embedded in programming patterns to new problems. The basic premise of formalization is the perception of the algorithm as an interplay of data operations with operations that control the flow of instruction execution. On this basis, we have defined the elements of formalization: elementary patterns, composite patterns, modules, and relations. Elementary patterns represent the basic building blocks of formalization and illustrate basic programming constructs (start/end, conditional statement, loop) and/or basic operations on data (query/set value and traversals over the data structure). A composite pattern is a declarative representation of a programming pattern and expresses its structure. A composite pattern is created by linking elementary patterns with relations that define the relationship between them. A module is a composite pattern that is represented as a single unit and can be included in another composite pattern depending on the defined interface. The use of modules allows us to represent more complex patterns at different levels of abstraction. The validity or usefulness of the formalization was demonstrated in an experiment with students enrolled in the Two-Subject Teacher undergraduate program at the Faculty of Education, University of Ljubljana, who had successfully completed the introductory course in programming. We analyzed their solutions and found that the correct solutions, which were implemented in different ways and did not contain redundant code, corresponded to the same pattern written in the formalization. For the correct solutions that contained redundant code, the formalization gave a clear indication of where the redundant code was added to the solution. Comparing the representation of the patterns of the incorrect solutions with the correct solutions showed at which stage of the solution design the learner had made a mistake. These are important results that demonstrate the usefulness of formalization in programming didactics. Another important result of the dissertation is the ontology of programming patterns that we developed based on the presented formalization. Representing the knowledge domain of programming patterns using the ontology allows us to develop efficient methods for evaluating solutions, identify knowledge deficits at the conceptual level, find common misconceptions, define personalized learning paths, structure learning materials and use them in tutoring systems. The developed ontology illustrates a conceptual shift in the representation of programming patterns by providing insights into the structure of programming solutions or ways of thinking of programmers. It is this feature of formal representation of strategic knowledge embedded in programming patterns that provides the basis for didactic approaches that can address the problem of lack of strategic knowledge among novices. It also provides many opportunities for further research to find innovative ways to use and develop ontology for the purposes of programming didactics.

    Item Type: Thesis (PhD thesis)
    Keywords: introductory programming, programming patterns, language-independent formalization, declarative representation, ontology, programming didactics
    Number of Pages: 268
    Language of Content: Slovenian
    Mentor / Comentors:
    Mentor / ComentorsIDFunction
    doc. dr. Irena Nančovska ŠerbecMentor
    Link to COBISS: https://plus.si.cobiss.net/opac7/bib/peflj/105995779
    Institution: University of Ljubljana
    Department: Faculty of Education
    Item ID: 7171
    Date Deposited: 04 May 2022 10:55
    Last Modified: 04 May 2022 10:55
    URI: http://pefprints.pef.uni-lj.si/id/eprint/7171

    Actions (login required)

    View Item