9 research outputs found

    Summer of Code: Assisting Distance-Learning Students with Open-Ended Programming Tasks

    Get PDF
    A significant difficulty in teaching programming lies in the transition from novice to intermediate programmer, characterised by the assimilation and use of schemas of standard programming approaches. A significant factor assisting this transition is practice with tasks which develop this schema use. We describe the Summer of Code, a two-week activity for part-time, distance-learning students which gave them some additional programming practice. We analysed their submissions, forum postings, and results of a terminal survey. We found learners were keen to share and discuss their solutions and persevered with individual problems and the challenge overall. 93% respondents rated the activity 3 or better on a 5-point Likert scale (n=58). However, a quarter of participants, mainly those who described themselves as average or poor programmers, felt less confident in their abilities after the activity, though half of these students liked the activity overall. 54% of all participants said the greatest challenge was developing a general approach to the problems, such as selecting appropriate data structures. This is corroborated by forum comments, where students greatly appreciated “think aloud” presentations by faculty tackling the problems. These results strongly suggest that students would benefit from more open-ended practice, where they have to select and design their own solutions to a range of problems

    Modelling competencies for computing education beyond 2020: a research based approach to defining competencies in the computing disciplines.

    Get PDF
    How might the content and outcomes of tertiary education programmes be described and analysed in order to understand how they are structured and function? To address this question we develop a framework for modelling graduate competencies linked to tertiary degree programmes in the computing disciplines. While the focus of our work is computing the framework is applicable to education more broadly. The work presented here draws upon the pioneering curricular document for information technology (IT2017), curricular competency frameworks, other related documents such as the software engineering competency model (SWECOM), the Skills Framework for the Information Age (SFIA), current research in competency models, and elicitation workshop results from recent computing conferences. The aim is to inform the ongoing Computing Curricula (CC2020) project, an endeavour supported by the Association for Computing Machinery (ACM) and the IEEE Computer Society. We develop the Competency Learning Framework (CoLeaF), providing an internationally relevant tool for describing competencies. We argue that this competency based approach is well suited for constructing learning environments and assists degree programme architects in dealing with the challenge of developing, describing and including competencies relevant to computer and IT professionals. In this paper we demonstrate how the CoLeaF competency framework can be applied in practice, and though a series of case studies demonstrate its effectiveness and analytical power as a tool for describing and comparing degree programmes in the international higher education landscape

    Embedding Vendor Certifications in the Cloud Computing Curriculum: Scope, Strategy and Perceptions

    Get PDF
    A series of previous Working Groups has met at ITiCSE conferences to explore ways of incorporating cloud computing into courses and curricula, including mapping industry job skills to knowledge areas (KAs) and KAs to student learning objectives (LOs). The importance of industry-standard learning content and certification, produced by cloud vendors and others, was apparent throughout this work. This Working Group will focus on the role of certification within cloud computing curricula, from the viewpoints of a range of stakeholders: students, graduates, institutions, vendors and other certification providers; and employers. Areas for study will include: the scope of available certifications and their mapping to our KAs and LOs; approaches to integrating certification in academic cloud curricula, and challenges involved in doing so; and perceptions of the stakeholders of the role and value of certifications in evidencing employability. The outcome of the work will include a set of recommendations for best practice

    NuzzleBug: Debugging Block-Based Programs in Scratch

    Full text link
    While professional integrated programming environments support developers with advanced debugging functionality, block-based programming environments for young learners often provide no support for debugging at all, thus inhibiting debugging and preventing debugging education. In this paper we introduce NuzzleBug, an extension of the popular block-based programming environment Scratch that provides the missing debugging support. NuzzleBug allows controlling the executions of Scratch programs with classical debugging functionality such as stepping and breakpoints, and it is an omniscient debugger that also allows reverse stepping. To support learners in deriving hypotheses that guide debugging, NuzzleBug is an interrogative debugger that enables to ask questions about executions and provides answers explaining the behavior in question. In order to evaluate NuzzleBug, we survey the opinions of teachers, and study the effects on learners in terms of debugging effectiveness and efficiency. We find that teachers consider NuzzleBug to be useful, and children can use it to debug faulty programs effectively. However, systematic debugging requires dedicated training, and even when NuzzleBug can provide correct answers learners may require further help to comprehend faults and necessary fixes, thus calling for further research on improving debugging techniques and the information they provide.Comment: To appear at the 2024 IEEE/ACM 46th International Conference on Software Engineering (ICSE '24), April 14--20, 2024, Lisbon, Portuga

    Supporting Collaboration in Introductory Programming Classes Taught in Hybrid Mode: A Participatory Design Study

    Get PDF
    Hybrid learning modalities, where learners can attend a course in-person or remotely, have gained particular significance in post-pandemic educational settings. In introductory programming courses, novices' learning behaviour in the collaborative context of classrooms differs in hybrid mode from that of a traditional setting. Reflections from conducting an introductory programming course in hybrid mode led us to recognise the need for re-designing programming tools to support students' collaborative learning practices. We conducted a participatory design study with nine students, directly engaging them in design to understand their interaction needs in hybrid pedagogical setups to enable effective collaboration during learning. Our findings first highlighted the difficulties that learners face in hybrid modes. The results then revealed learners' preferences for design functionalities to enable collective notions, communication, autonomy, and regulation. Based on our findings, we discuss design principles and implications to inform the future design of collaborative programming environments for hybrid modes

    A Human-Centric System for Symbolic Reasoning About Code

    Get PDF
    While testing and tracing on specific input values are useful starting points for students to understand program behavior, ultimately students need to be able to reason rigorously and logically about the correctness of their code on all inputs without having to run the code. Symbolic reasoning is reasoning abstractly about code using arbitrary symbolic input values, as opposed to specific concrete inputs. The overarching goal of this research is to help students learn symbolic reasoning, beginning with code containing simple assertions as a foundation and proceeding to code involving data abstractions and loop invariants. Toward achieving this goal, this research has employed multiple experiments across five years at three institutions: a large, public university, an HBCU (Historically Black Colleges and Universities), and an HSI (Hispanic Serving Institution). A total of 862 students participated across all variations of the study. Interactive, online tools can enhance student learning because they can provide targeted help that would be prohibitively expensive without automation. The research experiments employ two such symbolic reasoning tools that had been developed earlier and a newly designed human-centric reasoning system (HCRS). The HCRS is a first step in building a generalized tutor that achieves a level of resolution necessary to identify difficulties and suggest appropriate interventions. The experiments show the value of tools in pinpointing and classifying difficulties in learning symbolic reasoning, as well as in learning design-by-contract assertions and applying them to develop loop invariants for code involving objects. Statistically significant results include the following. Students are able to learn symbolic reasoning with the aid of instruction and an online tool. Motivation improves student perception and attitude towards symbolic reasoning. Tool usage improves student performance on symbolic reasoning, their explanations of the larger purpose of code segments, and self-efficacy for all subpopulations

    Engineering Language-Parametric End-User Programming Environments for DSLs

    Get PDF
    Human-computer communication can be achieved through different interfaces such as Graphical User Interfaces (GUIs), Tangible User Interfaces (TUIs), command-line interfaces, and programming languages. In this thesis, we used some of these inter- faces; however, we focused on programming languages which are artificial languages consisting of instructions written by humans and executed by computers. In order to create these programs, humans use specialized tools called programming environments that offer a set of utilities that ease human-computer communication. When creating programs, users must learn the language’s syntax and get acquainted with the pro- gramming environment. Unfortunately, programming languages usually offer a single user interface or syntax, which is not ideal considering different types of users with varied backgrounds and expertise will use it. Given the increasing number of people performing any kind of programming activity, it is important to offer different inter- faces depending on the programming task and the background of the users. However, from the language engineering point of view, offering multiple user interfaces for the same language is expensive, and if we specifically consider Domain-Specific Languages (DSLs), it is even more expensive given their audience and development teams’ size. Therefore, we study how to engineer different user interfaces for DSLs in a practical way.This thesis presents different mechanisms to engineer different language-parametric programming environments for end-users. These mechanisms rely heavily on reusing existing language components for existing languages or helping language engineers define these interfaces for new languages. We mainly studied four technological spaces, namely, Grammarware, Computational Notebooks, Block-based environments, and Projec- tional editors. We present three different language-parametric interfaces for interacting with DSLs, namely computational notebooks, projectional editors, and block-based editors. These interfaces offer different user experiences and rely upon different technological spaces. Different notations are associated with different technological spaces; for in- stance, grammarware is associated with text files, while block-based environments are associated with Blockly and JavaScript files. Therefore, to provide different notations for their languages, we have to "space travel" so that language engineers can select the most appropriate technological space and interface for their target audience. To support this, we defined grammarware as a common starting point to allow traveling to different technological spaces (e.g., computational notebooks space, projectional editors space, or block-based space). Based on this idea, we developed three tools that allowed language engineers to generate different interfaces for their DSLs based on a grammar definition of the language. Our results show that it is possible to generate these different user interfaces and decrease the effort required to create these. However, additional research is required to improve the usability of the generated interfaces and make the generation of these interfaces more flexible so that users’ data can be used as part of the generated interfaces

    Az informatika (programozás) oktatásának módszertani kérdései

    Get PDF
    AZ INFORMATIKA (PROGRAMOZÁS) OKTATÁSÁNAK MÓDSZERTANI KÉRDÉSEI Összefoglaló A disszertáció az informatika-, ezen belül a programozástudásnak definíciójára építve határozza meg az informatikaoktatás célját, a célhoz illeszkedő oktatási és tanulási módszereket, a képesség- és készségfejlesztési módokat és az informatikai tudás minősítésének szempontjait. A tézisek e rendszer alapjairól és kapcsolatukról szólnak: I. Az informatikatudomány gondolkodási módszereiben és eszközeiben egységes rendszert alkot, amelynek sikeres oktatásához tudományspecifikus oktatás-módszertan szükséges. II. Minden, informatikatantervben előírt témát informatikatudományi megközelítéssel oktatva együtt fejleszthető az informatikai gondolkodás, az alkalmazói készségek és a programozási készségek. III. A LAU alapú leírás, valamint ezek kombinációjaként a LAU-modell egy eszköz a tudás-, a készség- és a képességelemek, illetve a tanulási és tanítási folyamat leírására, jellemzésére. IV. Az informatikai gondolkodás – ezzel együtt a programozás – képességének a fejlesztését és gyakorlását a motiváció, az érzelmek, a mentális állapot katalizátorként segíti vagy blokkolja. A pedagógiai gyakorlatban – a tézisekből következően – az informatika és programozás oktatásának módszere nagymértékben egyénre, tanulóra szabott kell legyen
    corecore