Skip to main content

    Harrie Passier

    Testing is the most used process to assure software systems quality. With increasing complexity of software, testing is getting more important. Testing is an intellectual activity that needs to allocate multiple cognitive resources in... more
    Testing is the most used process to assure software systems quality. With increasing complexity of software, testing is getting more important. Testing is an intellectual activity that needs to allocate multiple cognitive resources in students, making it a challenging topic to teach in computer science programs. We advocate that testing is both model-based and exploratory, meaning that we can only make useful test models for test case design once we have made enough sense about the testing problem. The latter can only be achieved through exploring, i.e. questioning, studying, observing and inferring. In this paper, we present an initial diagnostic study to understand the sensemaking used by students while creating test models. We found indications of four different approaches used by students when modelling test cases. A plan for further research is presented on how to improve teaching by taking into account the student's sensemaking approaches.
    To gain insight into ideas and beliefs of students who finished an introductionary course on programming without any formal education on testing, we asked students to fill in a small questionnaire, to make four exercises in which they had... more
    To gain insight into ideas and beliefs of students who finished an introductionary course on programming without any formal education on testing, we asked students to fill in a small questionnaire, to make four exercises in which they had to write test cases to decide whether a specific method is correct or not and to determine the correctness of a given implementation, and to fill in a second questionnaire. We interviewed eleven of these students, in a semi-structured interview, to obtain more in-depth insight. The main outcome of our research shows that students do not test systematically, while most of them think they do test sytematically. We found that many (of most) students can only think of test cases based on programming code. Even if no code was provided (black box testing), students try to come up with code to base their test cases up on. We found more misconceptions related to testing.
    In its essence, social media is on its way of representing the superposition of all digital representations of human concepts, ideas, believes, attitudes, and experiences. In this realm, the information is not only shared, but also {mis,... more
    In its essence, social media is on its way of representing the superposition of all digital representations of human concepts, ideas, believes, attitudes, and experiences. In this realm, the information is not only shared, but also {mis, dis}interpreted either unintentionally or intentionally guided by (some kind of) awareness, uncertainty, or offensive purposes. This can produce implications and consequences such as societal and political polarization, and influence or alter human behaviour and beliefs. To tackle these issues corresponding to social media manipulation mechanisms like disinformation and misinformation, a diverse palette of efforts represented by governmental and social media platforms strategies, policies, and methods plus academic and independent studies and solutions are proposed. However, such solutions are based on a technical standpoint mainly on gaming or AI-based techniques and technologies, but often only consider the defender’s perspective and address in a ...
    Design patterns are standard solutions to common design problems. The famous Gang of Four book describes more than twenty design patterns for the object‐oriented paradigm. These patterns were developed more than twenty‐five years ago,... more
    Design patterns are standard solutions to common design problems. The famous Gang of Four book describes more than twenty design patterns for the object‐oriented paradigm. These patterns were developed more than twenty‐five years ago, using the programming language concepts available at that time. Patterns do not always fit underlying domain concepts. For example, even when a concrete strategy is a pure function, the classical strategy pattern represents this as a separate subclass and as such obscures the intent of this pattern with extra complexities due to the inheritance‐based implementation. Due to the ongoing development of oo‐languages, a relevant question is whether the implementation of these patterns can be improved using new language features, such that they fit more closely with the intent. An additional question is then how we can decide which implementation is to be preferred. In this article, we investigate both questions, using the strategy pattern as an example. Our main contribution is that we show how to reason about different implementations, using both the description of a design pattern and design principles as guidance.
    De kwaliteitszorg rond onderwijsprocessen in elektronische leeromgevingen staat nog in zijn kinderschoenen. Bestaande benaderingen om de participatie van studenten in het onderwijs te beoordelen, resultaten te evalueren en de... more
    De kwaliteitszorg rond onderwijsprocessen in elektronische leeromgevingen staat nog in zijn kinderschoenen. Bestaande benaderingen om de participatie van studenten in het onderwijs te beoordelen, resultaten te evalueren en de effectiviteit en efficiëntie te beoordelen, ...
    Designing and programming require several types of knowledge. Beside conceptual knowledge, procedural knowledge is of importance. Procedural knowledge, however, is often missed in courses about software design and implementation. As a... more
    Designing and programming require several types of knowledge. Beside conceptual knowledge, procedural knowledge is of importance. Procedural knowledge, however, is often missed in courses about software design and implementation. As a consequence, students can easily be stuck and do not know how to proceed. Considering software engineering as a complex task, the didactic approach 4C/ID is applicable. This approach prescribes that besides mental models, cognitive strategies should be learned, consisting of overall steps and rules and procedures per step. As an example, a procedure for designing and programming a concurrent program is briefly described. This procedure will scaffffold studentfis learning of concurrency concepts and their application.
    Learning how to design and implement a program is hard. Teaching methods and textbooks on Java programming often treat a new subject in terms of syntax and examples. Little attention is paid to systematically designing programs with these... more
    Learning how to design and implement a program is hard. Teaching methods and textbooks on Java programming often treat a new subject in terms of syntax and examples. Little attention is paid to systematically designing programs with these new concepts. Research has shown that such a complex task requires not only conceptual knowledge, but also explicit procedural support. In this paper, we investigate the effect of combining conceptual and procedural guidance to teaching and learning concurrent programming. We build on earlier research in which we have introduced such a structured design methodology which divides the development of multi-threaded Java programs into a sequence of explicit, manageable steps: the Steps Plan. We present our experiences with applying the Steps Plan in an introductory course on object-oriented programming, with multithreading. The main questions addressed are: "What problems did the students encounter in direct relation to the Steps Plan?", and "What general problems surfaced?" As to the first question, two important issues were that using a relatively far developed sequential solution as a stepping stone towards a multi-threaded solution wrong-footed some students, and that remedying race condition situations turned out to be supported at a too high level of abstraction. As to the second question, two notable issues were that deciding on the right amount and type of concurrency by themselves is maybe too difficult for students at this level, and that the notion of (establishing) correctness or quality of a solution is, different from the sequential case, not intuitively clear to students. For these issues, the paper recommends remedies and indicates directions for future work. We discuss the consequences for education as regards teaching materials and forms of teaching.
    Learning how to design and implement a concurrent program is hard. Most textbooks on Java programming only treat concurrency in terms of syntax and examples. They pay little attention to systematically designing concurrent programs. As a... more
    Learning how to design and implement a concurrent program is hard. Most textbooks on Java programming only treat concurrency in terms of syntax and examples. They pay little attention to systematically designing concurrent programs. As a result, design experience is to be acquired in a master-apprentice setup of supervised lab classes with immediate, personal feedback. In this paper, we describe a systematic design method in which the development of a concurrent program is divided into a sequence of explicit, manageable steps which scaffolds students' learning of concurrency concepts and their application. This methodology is intended to improve the procedural development skills of students, providing them with the necessary knowledge and self-efficacy to tackle the problem at hand. Furthermore, current education moves towards more independent learning. In distance education, for example, immediate feedback on how to proceed in case of problems is often absent. Additionally, enr...
    One of the aims of education in the field of software engineering is to teach students to value software quality. We would like students to be able to evaluate software with respect to quality, we would like them to be able to produce... more
    One of the aims of education in the field of software engineering is to teach students to value software quality. We would like students to be able to evaluate software with respect to quality, we would like them to be able to produce software with quality, and we would like them to know how to optimize software quality. Software quality is composed of characteristics of the software; those characteristics can be categorized according to the standard software quality framework [10]. We discern three ways to produce and guarantee software quality:
    The meaning of source code is often described by unit tests, as is for example the case in Test-Driven Software Development. Test-driven development is a principle in software engineering that requires developers to write tests for each... more
    The meaning of source code is often described by unit tests, as is for example the case in Test-Driven Software Development. Test-driven development is a principle in software engineering that requires developers to write tests for each method before implementing the method itself. This ensures that for (at least) all public methods tests exist. When performing a refactoring, existing code is changed or restructured according to a predefined scheme. After a refactoring is applied, the alignment between the structure of source code and corresponding unit tests can be broken. In this paper we describe different ways in which refactorings can impact the API coverage of unit tests. We present our approach of tracking the modifications made by refactorings, analyzing their influence on the existing test suite and giving advice to developers on how to update the test suite to migrate it. For example, tests may need to be moved or new tests developed in case a refactoring introduced new public methods. Our approach is applicable to all refactorings. We conclude this paper by discussing the potential of the presented approach and of the preliminary tool support in the Eclipse IDE.
    Mobile applications (or mobile apps or apps for short) gain importance, and will, as is our expectation, find a place in the curricula of Computer Science and Software Engineering. In books, courses and tutorials, not much attention has... more
    Mobile applications (or mobile apps or apps for short) gain importance, and will, as is our expectation, find a place in the curricula of Computer Science and Software Engineering. In books, courses and tutorials, not much attention has been given to the design of mobile applications. In this paper, we describe the anatomy of mobile apps, using Android as an example. Based on this anatomy, we offer an inventarization of modeling techniques that can be applied to adequately design mobile apps. Some of these modeling techniques are already taught in most curricula, albeit in different courses. A modeling technique that is useful for several aspects of mobile apps is the Interaction Flow Modeling Language (IFML). This modeling technique would have to be introduced when one would like to teach students how to design apps. We also describe which strategies can be followed when introducing mobile apps in a curriculum: as a subject of a course, together with knowledge of the concepts and the necessary modeling techniques, or as examples in different courses. We discuss advantages and disadvantages of both approaches.
    Programming is a complex task, which should be taught using authentic exercises, with supportive information and procedural information. Within the field of Computer Science, there are few examples of procedural information that guide... more
    Programming is a complex task, which should be taught using authentic exercises, with supportive information and procedural information. Within the field of Computer Science, there are few examples of procedural information that guide students in how to proceed while solving a problem. We developed such guidelines for programming tasks in JavaScript, for students who have already learned to program using an object oriented language. Teaching JavaScript in an academic setting has advantages and disadvantages. The disadvantages are that the language is interpreted so there is no compiler to check for type errors, and that the language allows many 'awful' constructs. The advantage is that, because of those disadvantages, programmers should consciously apply rules for 'good' programs, instead of being able to rely on the errors and warnings that a compiler will raise. In this article, we show how we guide students to develop elegant code in JavaScript, by giving them a set of guidelines, and by advising a process of repeated refactoring until a program fulfills all requirements. To show that these guidelines work, we describe the development of a generic module for client-side form validation. The process followed and the resulting module both are valuable in an educational setting. As an example, it shows and explains precisely to students how such a module can be developed by following our guidelines, step by step.
    Research Interests:
    At the Open University we are developing tools to support students in learning procedural skills. The tool for rewriting logical formulas into disjunctive normal form was tested with students in the period 2007-2008. The results of this... more
    At the Open University we are developing tools to support students in learning procedural skills. The tool for rewriting logical formulas into disjunctive normal form was tested with students in the period 2007-2008. The results of this tests help us to improve our tool, give answers to some questions we had during the development and encourage us to proceed.
    Code name ALFANET_D66_v1 Version v1 draft□ final ☑ ... Contributors KLETT, EDP, OUNL, UNED; SAGE; ACE CASE ... Authors (Partner) Carmen Barrera, Jesús G. Boticario , Elena Gaudioso, Olga C. Santos, Antonio Rodríguez (UNED) Ingeborg Hoke,... more
    Code name ALFANET_D66_v1 Version v1 draft□ final ☑ ... Contributors KLETT, EDP, OUNL, UNED; SAGE; ACE CASE ... Authors (Partner) Carmen Barrera, Jesús G. Boticario , Elena Gaudioso, Olga C. Santos, Antonio Rodríguez (UNED) Ingeborg Hoke, Joerg Boy, ...
    The objective of this paper is to introduce a standards-based model for adaptive e-learning and to investigate the conditions and tools required by authors to implement this model. Adaptation in the context of e-learning is about creating... more
    The objective of this paper is to introduce a standards-based model for adaptive e-learning and to investigate the conditions and tools required by authors to implement this model. Adaptation in the context of e-learning is about creating a learner experience that purposely adjusts ...
    This deliverable describes the functionality included in the second prototype. In order to situate to the reader, first the system architecture is shortly described. Based on the identified modules, the second prototype functionality is... more
    This deliverable describes the functionality included in the second prototype. In order to situate to the reader, first the system architecture is shortly described. Based on the identified modules, the second prototype functionality is explained, in addition to the functions already provided for the first prototype. This document is intended for internal audience (users and developers).
    This deliverable describes the functionality included in the Final System. In order to situate to the reader, first the system architecture is shortly described. Based on the identified modules, the Alfanet functionality is explained.... more
    This deliverable describes the functionality included in the Final System. In order to situate to the reader, first the system architecture is shortly described. Based on the identified modules, the Alfanet functionality is explained. This document is intended for internal audience (users and developers).
    We are developing several exercise assistants which give very good feedback. To develop an exercise assistant, we need three components: a domain description, rules for reasoning about the domain, and one or more strategies for solving... more
    We are developing several exercise assistants which give very good feedback. To develop an exercise assistant, we need three components: a domain description, rules for reasoning about the domain, and one or more strategies for solving the exercises in the domain. To support the possibility to adapt the several components, to avoid code duplication and maximize code reuse, we have developed a generic framework for developing exercise assistants. The generic framework for developing exercise assistants ...
    Logic is constructive in nature, and in a course on logic a student learns how to manipulate logical formulas. For example, a student has to learn how to simplify a logical formula, how to transform a logical formula into disjunctive... more
    Logic is constructive in nature, and in a course on logic a student learns how to manipulate logical formulas. For example, a student has to learn how to simplify a logical formula, how to transform a logical formula into disjunctive normal form (DNF), and how to prove equivalences of logical formulae. Solving logical exercises is often done with pen and paper, but e-learning tools offer great possibilities. In particular for a distance learning university such as the Dutch Open University it is important to support the interactive ...
    One of the essential elements needed for effective learning is feedback. Feedback can be given to learners during learning but also to authors during course development. In the current generation of eLearning systems automatically... more
    One of the essential elements needed for effective learning is feedback. Feedback can be given to learners during learning but also to authors during course development. In the current generation of eLearning systems automatically produced feedback is sparse, mostly hard coded, not very valuable and almost only used in question-answer situation. Valuable feedback, for example produced by a human tutor via e-mail, is often possible but this introduces delays and is time consuming. We want to develop ...
    E-learning tools for mathematical problem solving such as solving linear equations should be interactive. As with pen and paper, a student constructs a solution stepwise. E-learning tools provide the capability to give feedback to a... more
    E-learning tools for mathematical problem solving such as solving linear equations should be interactive. As with pen and paper, a student constructs a solution stepwise. E-learning tools provide the capability to give feedback to a student at each step. Feedback is essential for effective learning and hence crucial for interactive e-learning tools. This paper describes a framework for providing feedback in interactive e-learning tools. The framework is particularly useful for domains with hierarchically structured terms, a set of rewrite rules to ...
    The objective of this paper is to introduce a standards-based model for adaptive e-learning and to investigate the conditions and tools required by authors to implement this model. Adaptation in the context of e-learning is about creating... more
    The objective of this paper is to introduce a standards-based model for adaptive e-learning and to investigate the conditions and tools required by authors to implement this model. Adaptation in the context of e-learning is about creating a learner experience that purposely adjusts ...
    Abstract We are developing several exercise assistants which give very good feedback. To develop an exercise assistant, we need three components: a domain description, rules for reasoning about the domain, and one or more strategies for... more
    Abstract We are developing several exercise assistants which give very good feedback. To develop an exercise assistant, we need three components: a domain description, rules for reasoning about the domain, and one or more strategies for solving the exercises in the domain. To support the possibility to adapt the several components, to avoid code duplication and maximize code reuse, we have developed a generic framework for developing exercise assistants.