Article

Lowering the barriers to programming: A taxonomy of programming environments and languages for novice programmers

Authors:
To read the full-text of this research, you can request a copy directly from the authors.

Abstract

Since the early 1960's, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system's authors' approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the authors.

... However, the technical complexity and lack of accessible tools have been identified as significant barriers to its adoption in K-12 education [3]. Research has shown that the learnability of programming languages and tools is critical in promoting student engagement and understanding [4,5]. Visual programming languages like Scratch and Google Blockly have been widely used to teach computational thinking and programming to young learners [4,5]. ...
... Research has shown that the learnability of programming languages and tools is critical in promoting student engagement and understanding [4,5]. Visual programming languages like Scratch and Google Blockly have been widely used to teach computational thinking and programming to young learners [4,5]. Research has shown that visual programming tools can enhance students' understanding and engagement with computational thinking concepts, especially for young learners with no prior programming experience [4]. ...
... Visual programming languages like Scratch and Google Blockly have been widely used to teach computational thinking and programming to young learners [4,5]. Research has shown that visual programming tools can enhance students' understanding and engagement with computational thinking concepts, especially for young learners with no prior programming experience [4]. In addition, these tools have been shown to improve student learning outcomes compared to traditional text-based programming languages [6,7]. ...
Article
Full-text available
This paper presents a novel architecture utilizing blockchain technology to enhance educational systems. A method is proposed that empowers non‐fungible tokens by updating their metadata through an API layer, making blockchain technology more accessible to K‐12 students. Leveraging Google Blockly, a visual programming language, the aim is to engage students in computational thinking and foster their understanding of blockchain concepts. The approach promotes student engagement, facilitates the comprehension of digital ownership and value, and develops essential skills for the digital age. Through the method, the contribution is in the advancing of blockchain in education. The demo video can be seen using the following link, https://youtu.be/ZPVKgWtSb6U.
... Novice programmers need to learn logic and syntax of selected computer programming language, how to form algorithms and to solve problems (Bosch & D'Mello, 2017;Kalelioğlu, 2015;Tuomi et al., 2018). Programming language concepts expressed in a foreign language, and inexperience on programming can cause students to carry on with learning process in negative feelings, even to quit it (Garner, 2002;Gomes & Mendes, 2007;Kelleher & Pausch, 2005;Salleh et al., 2018;Tsai, 2019). This situation may create computer programming anxiety on students and prevent them to acquire programming skills (Chang, 2005;Connolly et al., 2007;Freeman et al., 2004;Owolabi et al., 2014). ...
... Programming languages have comprehensive content and some complex rules, and students attempt them memorizing. That is hindering factor of students' programming success (Gomes & Mendes, 2007;Kelleher & Pausch, 2005;Stachel et al., 2013;Yukselturk & Altiok, 2017). Asai et al. (2019) states that complexity of programming steps excessively challenge working memory and increase intrinsic cognitive load (CL). ...
... Negative feeling of novice programmers toward Programming language (Kelleher & Pausch, 2005;Tsai, 2019) may create computer programming anxiety on them and prevent improve programming skills (Chang, 2005;Connolly et al., 2007). But, some studies in literature have investigated computer anxiety instead of computer programming anxiety (Chang, 2005;Owolabi et al., 2014). ...
Article
Full-text available
In this study, based on quasi-experimental research, was investigated the effects of teaching Python programming language via Blockly tool, which had hybrid interface, on students’ computer programming anxiety, cognitive load level, and achievement. Participants were 90 high school students, 44 of them in experimental group (hybrid interface) and 46 of them in control group (non-hybrid interface). According to results, there was a meaningful difference between programming achievement scores of students in favor of experimental group while there was no difference in terms of computer programming anxiety between groups. Moreover, after 10-week implementation process, students’ anxiety increased in each group. It was found out cognitive load levels of both groups in the first week were higher than final week. Although both weekly and 10-week intrinsic, extraneous, germane, and total cognitive load levels of experimental group were lower than control group, there was no significantly difference between groups. Consequently, it can be said that programming via hybrid interface, using Blockly, has not an effect on students’ computer programming anxiety positively whereas it helps to keep cognitive load at low level and to increase students’ programming success more. It is recommended that considering these results to make computer programming education is more efficient in high schools and administrators encourage the teachers to use programming tool had hybrid interface such as Blockly.
... However, the technical complexity and lack of accessible tools have been identified as significant barriers to its adoption in K-12 education [14]. Research has shown that the learnability of programming languages and tools is critical in promoting student engagement and understanding [4,8]. ...
... Visual programming languages like Scratch and Google Blockly have been widely used to teach computational thinking and programming to young learners [4,8]. Research has shown that visual programming tools can enhance students' understanding and engagement with computational thinking concepts, especially for young learners with no prior programming experience [4]. ...
... Visual programming languages like Scratch and Google Blockly have been widely used to teach computational thinking and programming to young learners [4,8]. Research has shown that visual programming tools can enhance students' understanding and engagement with computational thinking concepts, especially for young learners with no prior programming experience [4]. In addition, these tools have been shown to improve student learning outcomes compared to traditional text-based programming languages [1,12]. ...
Preprint
Full-text available
As blockchain technology continues to gain attention, there is a growing need to make it more accessible to young learners in K-12 education. However, the technical complexity and lack of accessible tools have been identified as significant barriers to adoption. Our paper proposes a new method for empowering NFTs by continuously updating their metadata using an API layer. The approach aims to reduce the barriers to entry and enable K-12 students to explore blockchain technology in the same way they learn computational thinking through visual programming tools like Scratch. Our method utilizes Google Blockly, a visual programming language, to make updating NFT metadata more accessible and engaging for young learners. By leveraging a familiar and engaging visual programming language, students can develop their computational thinking skills and explore blockchain technology in a fun and intuitive way. The paper discusses the benefits of using NFTs as a learning tool, including how they can help students understand the concept of digital ownership and value. Overall, our proposed method has the potential to promote student engagement and understanding of blockchain technology, which could have significant implications for the future of education.
... Porém, aprender linguagem de programação é uma tarefa desafiadora, sendo necessário o domínio de um conjunto amplo de habilidades técnicas, tais como o conhecimento de ambientes para a construção do código, de embasamento matemático e de outras capacidades, que estão mais relacionadas a aspectos cognitivos e psicológicos. Tornar acessível esse tipo de conhecimento é muito importante, sendo ele capaz de estimular muitas capacidades cognitivas e tornando possível a aplicação das técnicas utilizadas, na resolução de diversos tipos de problemas, nas mais distintas profissões (Pausch;Kelleher, 2005). ...
... Porém, aprender linguagem de programação é uma tarefa desafiadora, sendo necessário o domínio de um conjunto amplo de habilidades técnicas, tais como o conhecimento de ambientes para a construção do código, de embasamento matemático e de outras capacidades, que estão mais relacionadas a aspectos cognitivos e psicológicos. Tornar acessível esse tipo de conhecimento é muito importante, sendo ele capaz de estimular muitas capacidades cognitivas e tornando possível a aplicação das técnicas utilizadas, na resolução de diversos tipos de problemas, nas mais distintas profissões (Pausch;Kelleher, 2005). ...
Article
Full-text available
As Tecnologias Sociais (TS) fundam-se em conhecimento popular, criatividade e na disponibilidade de recursos da localidade qual emerge. As TS possuem objetivos explícitos de melhoria da qualidade de vida, inclusão social e empoderamento das parcelas menos favorecidas da população. Esta pesquisa discute os efeitos das TS no comportamento humano, daqueles que com elas interagem. Frente ao exposto, o presente estudo tem como objetivo analisar a contribuição das TS na educação especificamente, verificar as TS implantadas por uma instituição em estudantes de uma cidade no interior do Estado de Sergipe. Para tanto recorre a uma abordagem qualitativa com caráter exploratório mediante o emprego de uma revisão documental e bibliográfica. Os principais resultados reforçam a relevância da TS como expressão de dissolução alternativa ao que vem sendo entregado a sociedade pelos formatos hegemonicamente consolidados.
... Thus, students starting in primary school and continuing up to 12th grade will learn new problem-solving approaches that will benefit from computational thinking, to develop their basic computer knowledge and to be both a user and creator of programming technology (K12 Computer Science Framework Steering Committee, 2016). But learning programming may not be easy for a beginner regardless of their age (Kelleher & Pausch, 2005). Beginner programmers not only have to produce solutions to problems and understand the working system of programs, but also have to learn programming syntax and commands, which can be difficult for them (Kelleher & Pausch, 2005). ...
... But learning programming may not be easy for a beginner regardless of their age (Kelleher & Pausch, 2005). Beginner programmers not only have to produce solutions to problems and understand the working system of programs, but also have to learn programming syntax and commands, which can be difficult for them (Kelleher & Pausch, 2005). In contrast, visual programming language overcomes the technical and syntax-related difficulties of textbased programming languages and provides an important opportunity for students to experience introductory programming/coding activities and meet computer science (Bers et al., 2014;Brown et al., 2016;Effenberger & Pelánek, 2018). ...
Article
Full-text available
When the studies on the effectiveness of visual programming language are examined, it is seen that studies on coding teaching have been carried out frequently recently. In this study, Scratch was used as a teaching tool in teaching science lessons. In this way, a new perspective has been brought to Scratch applications. In the related study, the effects of designing science experiments with visual programming language (Scratch) on students’ beliefs of self-efficacy related to computational thinking (CT) skills, metacognitive awareness levels, and motivation levels for science learning are examined. This study was carried out using a single-group research design based on pretest and posttest applications. Students attending the fifth grade participated in this study. Sixty-five students attending the fifth grade participated in the research. Research data were obtained using “Self-Efficacy Perception Scale for CT Skills (SEP_CTS),” “Metacognitive Awareness Scale (MAS),” and “Motivation Scale for Science Learning (MSSL).” The research process is 10 weeks and 3 days in total. It was determined that designing science experiments in visual programming language applications based on Scratch improved students’ CT self-efficacy perceptions, but did not have the expected effect on students’ science learning motivation and metacognitive awareness. This research provides evidence that some skills can be improved by using Scratch as a teaching tool in different courses. With the focus of research on this subject, it can contributed to the development of new understandings of Scratch in teaching processes.
... The challenge recognized here is the need to simplify the development of computer code that supports the entire processes of data analysis, especially for noncomputer science majors. Teaching programming has traditionally relied on text-based languages, which has been cited by many novice programmers as one of the barriers to entry in programming [30], and consequently data science. Here, we believe that using engaging learning environments, such as NCTs, for programming will make developing computer code manageable to a larger number of students, while still developing key competencies in data science as text-based programming languages. ...
... This is the author's version which has not been fully edited and content may change prior to final publication. A significant effort to document the benefits of visual programming languages, compared with textual languages is reported in [30]. In their work, Kelleher et. ...
Article
Full-text available
Over the last decade, Data Science has emerged as one of the most important subjects that has had a major impact on industry. This is due to the continual development of scientific methods, algorithms, processes, and computational tools that help to extract knowledge from raw data efficiently and cost-effectively, compared with early-generation tools. Professional data scientists create code that processes, analyses and extracts actionable insights from high volumes of data. This process requires a deep understanding of mathematical principles, statistics, business knowledge, and computer science. But most importantly, the data science development chain requires knowledge of a high-level programming tool and its dependencies. This is a major problem in some aspects due to the steep learning curve. In this paper, we describe and present a modularized Data Science curriculum for undergraduate learners that relies on no-code software development tools as programming aids for non-computer science majors. No-code development tools have been added to the traditional teaching pedagogy to improve students’ motivation and conceptual understanding of coding despite their limited programming skills. The study aims to assess the impacts of visual programming languages on the performance of non-computer science majors on programming problems. The study’s sample consists of 50 fourth-year students from the Faculty of Science and Technology at the Midlands State University. A post-survey questionnaire and assessment items were administered to the control and experimental groups. Results show that the students drawn from the experimental group benefited from the use of a visual programming language. These results offer evidence-based recommendations for incorporating high-performance no-code software development tools in the formal curriculum to aid teaching and learning data science programming for students of diverse academic backgrounds.
... As automation and technology continue to play a significant role in shaping the modern workplace, offering programming courses at universities, secondary schools, and even primary schools is critical to preparing students for the high demand for technology in the future. However, programming education presents a unique set of challenges, requiring a combination of mathematical operations, abstract concepts, and programming syntax, which can be difficult for beginners [1]. The high failure rate in programming courses [2] not only decreases the number of graduates available to fill the growing demand for software programmers but could also significantly impact individual students. ...
... In the analyzed studies, data pre-processing is acknowledged as a crucial step for effective analysis, which can significantly impact the performance of the resulting models [1]. While not every paper provides detailed descriptions of pre-processing steps, most papers perform some form of pre-processing, which can be broadly divided into data cleaning, data transformation, data integration, data reduction, data partitioning, load balancing, and data normalization [24] [25] [27]. ...
Article
Full-text available
Programming education has become an essential skill for the digital generation. However, it presents a unique set of challenges that can be difficult for beginners. Educational data mining (EDM) has been increasingly utilized in programming education to enhance learning outcomes and understand students' learning behavior. By collecting and analyzing data from various sources, such as students' learning activities, interactions with learning resources, and assessment results, EDM can provide valuable insights into students' learning performance and potential areas for improvement. This paper presents a systematic literature review of recent literature (last five years) and reports on state of the art and trends in using EDM for student performance prediction in programming courses. It provides a comprehensive analysis of the input data used in previous work, exploring the different types of datasets used and the features that affect student performance. In addition, it addresses the predictive objectives and target variables for performance prediction in programming courses. On the other hand, it explores the most common prediction approaches, data pre-processing procedures, cross-validation methods, and evaluation metrics used to describe the performance of prediction algorithms. In addition, we discuss the limitations and challenges of various prediction approaches and provide valuable insights and directions for future research.
... This section provides a critical literature review of the difficulties that novices face in learning a programming language, especially for nonspeakers of English. Some papers only deal with programming issues in the general sense, rather than highlighting specific problems (for example, Hadjerrouit (2008), Yinnan and Chaosheng (2012) and Kelleher and Pausch (2005)). Nonetheless, some of these papers provided useful lessons. ...
... In fact, Soloway and Spohrer (1989) concluded that novices need 10 years to become expert programmers. Kelleher and Pausch (2005) focus on some issues related to the learning of programming for beginners, for example, novices not seeing the relevance of programming or novices needing to feel they can achieve progress in learning programming. Hook and Eckerdal (2015) analysed the final exam results in an introductory programming course and then concluded that students who spent more time on the computer practicing programming problems had higher marks in the course. ...
Conference Paper
Full-text available
Keywords: Computer programming learning programming programming language programming student novice programmers A B S T R A C T Since computers have become widely used, programming has become a critical skill. Programming languages are built upon English language words and phrases. It is possible that this could make learning an English-based programming language for non-English language speakers especially challenging. In actuality, the literature did not say much. While many focused on solutions to teaching programming, and some researchers focused on the problems that led to these solutions, very few researchers made any distinction between the language capabilities of novices. Based on the literature, this research study highlights issues that directly influence beginners learning programming, looking particularly at the difficulties faced by those that do not have English as a first language. The methodological approach used in this research is a mixed methods design, with the questionnaire method for data collection in both CQUniversity in Australia and Sebha University in Libya, with experienced programmers and novice programmers in various stages of their study. These data were categorized and analysed to identify areas of difficulty. It became clear that there was a difference. While Australian students identified issues with loop statements (Do...While) and other program logic, Libyan students identified the major problem to be error messages and their interpretation, with over 71% of students identifying this as a problem. However, error messages were mentioned by just 2% of participants at CQUniversity. It was clear that English was a problem. ‫سبها‬ ‫وجامعة‬ ‫املركزية‬ ‫كوينزالند‬ ‫جامعة‬ ‫في‬ ‫اإلنجليزية‬ ‫اللغة‬ ‫بغير‬ ‫للناطقين‬ ‫البرمجة‬ ‫تعلم‬ ‫صعوبات‬ ‫تحديد‬ * ‫اهيم‬ ‫إبر‬ ‫ال‬ ‫ن‬ ‫ع‬ ‫اس‬ 1 ‫و‬ ‫أ.كاولينج‬ ‫مايكل‬ 2 ‫و‬ ‫افت‬ ‫هادجر‬ ‫روجر‬ 3 1 ‫ليبيا‬ ، ‫سبها‬ ، ‫سبها‬ ‫جامعة‬ ، ‫املعلومات‬ ‫تقنية‬ ‫كلية‬ 2 ‫والتطبيقات‬ ‫املتنقلة‬ ‫الحوسبة‬ CQUniversity ، ‫والتكنولوجيا‬ ‫الهندسة‬ ‫كلية‬ ، 160 Ann St Brisbane ‫كوينزالند‬ ، 4000 ‫أستراليا‬ ، 3 ‫سيدني‬ ‫التكنولوجيا‬ ‫جامعة‬ ‫املعلومات،‬ ‫وتكنولوجيا‬ ‫الهندسة‬ ‫كلية‬ ‫والبحث،‬ ‫بوي‬ ‫التر‬ ‫االبتكار‬ ، ‫رودواي‬ ‫ويلز‬ ‫ساوث‬ ‫نيو‬ ، 2007 ‫أستراليا‬ ، ‫الكلمات‬ ‫املفتاحية:‬ ‫الحاسوب‬ ‫برمجة‬ ‫تعلم‬ ‫البرمجة‬ ‫برمجة‬ ‫لغة‬ ‫البرمجة‬ ‫طالب‬ ‫املبتدئين‬ ‫املبرمجين‬ ‫امللخص‬ ‫نطاق‬ ‫على‬ ‫الكمبيوتر‬ ‫أجهزة‬ ‫استخدام‬ ‫انتشر‬ ‫ان‬ ‫منذ‬ ‫واسع،‬ ‫البرمجة‬ ‫فلغات‬ ‫األهمية.‬ ‫بالغة‬ ‫مهارة‬ ‫البرمجة‬ ‫اصبحت‬ ‫اللغة‬ ‫ات‬ ‫وعبار‬ ‫كلمات‬ ‫على‬ ‫مبنية‬ ‫ية،‬ ‫اإلنجليز‬ ‫وبا‬ ‫اإلنجليزية‬ ‫اللغة‬ ‫على‬ ‫يعتمد‬ ‫البرمجة‬ ‫تعلم‬ ‫جعل‬ ‫وهذا‬ ‫ل‬ ‫جعل‬ ‫تالي‬ ‫هذا‬ ‫في‬ ‫الكثير‬ ‫تقدم‬ ‫لم‬ ‫السابقة‬ ‫الدراسات‬ ‫خاص.‬ ‫بشكل‬ ‫ا‬ ً ‫صعب‬ ‫ا‬ ً ‫أمر‬ ‫ية‬ ‫اإلنجليز‬ ‫باللغة‬ ‫الناطقين‬ ‫للغير‬ ‫تعلمها‬ ‫لتدريس‬ ‫حلول‬ ‫على‬ ‫الكثيرون‬ ‫ركز‬ ‫السابقة‬ ‫اسات‬ ‫الدر‬ ‫ففي‬ ‫الجانب.‬ ‫البرمجة،‬ ‫الت‬ ‫املشكالت‬ ‫على‬ ‫ركز‬ ‫البعض‬ ‫أدت‬ ‫ي‬ ‫هذه‬ ‫إلى‬ ‫الحلول،‬ ‫الباحثي‬ ‫من‬ ‫ا‬ ً ‫جد‬ ‫قليل‬ ‫عدد‬ ‫بينما‬ ‫الدراسات‬ ‫إلى‬ ‫ا‬ ً ‫استناد‬ ‫للمبتدئين.‬ ‫اللغوية‬ ‫للقدرات‬ ‫تطرق‬ ‫ن‬ ‫املبتدئين‬ ‫تعلم‬ ‫على‬ ‫مباشر‬ ‫بشكل‬ ‫تؤثر‬ ‫التي‬ ‫القضايا‬ ‫على‬ ‫الضوء‬ ‫تسلط‬ ‫سوف‬ ‫البحثية‬ ‫اسة‬ ‫الدر‬ ‫هذه‬ ‫السابقة،‬ ‫للبرمجة،‬ ‫لغة‬ ‫ليست‬ ‫لديهم‬ ‫ية‬ ‫اإلنجليز‬ ‫اللغة‬ ‫تعتبر‬ ‫الذين‬ ‫أولئك‬ ‫يواجهها‬ ‫التي‬ ‫الصعوبات‬ ‫في‬ ‫خاص‬ ‫بشكل‬ ‫وتبحث‬ Identifying the Difficulties of Learning Programming for Non-English Speakers at CQUniversity and Sebha University Nnass et al.
... This section provides a critical literature review of the difficulties that novices face in learning a programming language, especially for nonspeakers of English. Some papers only deal with programming issues in the general sense, rather than highlighting specific problems (for example, Hadjerrouit (2008), Yinnan and Chaosheng (2012) and Kelleher and Pausch (2005)). Nonetheless, some of these papers provided useful lessons. ...
... In fact, Soloway and Spohrer (1989) concluded that novices need 10 years to become expert programmers. Kelleher and Pausch (2005) focus on some issues related to the learning of programming for beginners, for example, novices not seeing the relevance of programming or novices needing to feel they can achieve progress in learning programming. Hook and Eckerdal (2015) analysed the final exam results in an introductory programming course and then concluded that students who spent more time on the computer practicing programming problems had higher marks in the course. ...
Article
Full-text available
Since computers have become widely used, programming has become a critical skill. Programming languages are built upon English language words and phrases. It is possible that this could make learning an English-based programming language for non-English language speakers especially challenging. In actuality, the literature did not say much. While many focused on solutions to teaching programming, and some researchers focused on the problems that led to these solutions, very few researchers made any distinction between the language capabilities of novices. Based on the literature, this research study highlights issues that directly influence beginners learning programming, looking particularly at the difficulties faced by those that do not have English as a first language. The methodological approach used in this research is a mixed methods design, with the questionnaire method for data collection in both CQUniversity in Australia and Sebha University in Libya, with experienced programmers and novice programmers in various stages of their study. These data were categorized and analysed to identify areas of difficulty. It became clear that there was a difference. While Australian students identified issues with loop statements (Do...While) and other program logic, Libyan students identified the major problem to be error messages and their interpretation, with over 71% of students identifying this as a problem. However, error messages were mentioned by just 2% of participants at CQUniversity. It was clear that English was a problem.
... Computing education has a long and eclectic history of engaging youth in creative coding [45]. Since the early 1960s, ever-larger youth communities have been making with code. ...
... While there has been much exploration of tools to support creative expression and learning with code [45], support for creativity itself is more limited. Most of these support tools attempt to reduce errors [14], facilitate debugging [52], or otherwise support software engineering activities [50]. ...
Preprint
Full-text available
What role can AI play in supporting and constraining creative coding by families? To investigate these questions, we built a Wizard of Oz platform to help families engage in creative coding in partnership with a researcher-operated AI Friend. We designed a 3 week series of programming activities with ten children, 7 to 12 years old, and nine parents. Using a creative self efficacy lens, we observe that families found it easier to generate game ideas when prompted with questions by AI Friend; parents played a unique role in guiding children in more complex programming tasks when the AI Friend failed to help, and children were more encouraged to write code for novel ideas using the AI friend help. These findings suggest that AI supported platforms should highlight unique family AI interactions focused on children's agency and creative self-efficacy.
... Reducing learners' cognitive load, however, does not fully lead to ideal computational thinking education. Paradoxically, reducing learners' cognitive load and preserving the authenticity of computational thinking education are not compatible: authentic programming involves complex syntax and semantics that learners can easily make mistakes about (Chang et al., 2024), and such mistakes result in reduced interest in programming and increased likelihood of withdrawal (Parsazadeh et al., 2021;Kelleher & Pausch, 2005). Because of this, computational thinking educators often struggle to maintain learning activities at a desirably difficulty level (Cheah, 2020;McDaniel & Butler, 2011), such that learners would neither quit learning about challenging programming nor stay learning about unchallenging programming. ...
Article
Full-text available
Computational thinking is an important skill applicable to multiple disciplines and can be difficult to teach due to the stress and frustration novice learners feel from cognitively challenging learning activities. While existing theories like Zone of Proximal Development, Flow Theory, and Zone of Proximal Flow suggest that an ideal mode of learning could be achieved when the complexity of learning tasks is reduced enough to match the skillfulness of beginning learners, further evidence is needed. This study focused on non-STEM major students building desktop smart greenhouses using micro:bit. Adopting a convergent mixed methods design, we collected and analyzed qualitative and quantitative data that captured individuals’ attitudinal shifts. Data analysis showed that while the beginner friendliness of micro:bit strengthened participants’ competence beliefs, their anxiety unexpectedly held or increased. These findings highlight the need for refining existing theoretical models to account for (1) the existence of additional dimensions, such as career readiness, that could fundamentally reshape the stratification of the learning zones, and (2) the existence of a dynamic zone of anxiety that expands with individuals’ increasing skillfulness.
... Curriculum plays a central role in CT education. Efforts at various levels have been invested to increase participation of females in computing, including revisions in curricular standards that break down the meaning of CT based on big ideas and emphasize creativity and relevance to society's needs (Cuny, 2012) and innovations in programming environments, such as Scratch, to introduce a broader, younger, and more diverse group of learners to computer science (Kelleher & Pausch, 2005). Researchers also pointed out that it is necessary to renew the framework for computer science pedagogy (Shah et al., 2013) to promote equity in CT education. ...
Article
Full-text available
Aiming to promote equity in computing, this study proposes an educational model that offers an alternative approach to inspire K-12 students to become interested in CS and develop their computational thinking (CT) skills. It also examines the experience of marginalized students during the COVID pandemic in a learning environment grounded in the model. Adopting a mixed methods case study, this work focused on the experience of 82 girls enrolled in a free after school program. The results show that access to the opportunities is critical to promote equity. The experience allows the underrepresented population, i.e. the girls, to gain deepened understanding of not only CT/CS, but also other topics like work ethics, digital citizenship, and how to work with peers to achieve goals. The girls have also broadened their views of computing related fields by working on meaningful projects that demonstrated the value of abstract concepts of coding and programming. A combination of human facilitators and well-constructed tutorials has the potential of improving girls’ self-study skills and preparing them to become more independent learners.
... Programming, in simple terms, is the process of creating software through code, effectively guiding a computer to perform specific tasks by "speaking" in its language. Kelleher and Pausch (2005) from Carnegie Mellon University describe programming as a system of symbols representing calculative tasks, which a computer interprets through various programming languages. Since the 1960s, numerous engineers, mathematicians, and researchers have developed diverse programming languages and platforms aimed at expanding accessibility to programming. ...
Article
Full-text available
This article explores coding as an essential skill in today's technology-driven world. Given the impact of technology on almost every aspect of daily life, understanding coding is increasingly valuable. The study examines the fundamentals of coding, emphasizing its societal importance and highlighting key benefits, such as enhanced problem-solving skills and increased earning potential. Using a descriptive approach, the article outlines essential steps for beginners, including selecting appropriate learning resources and practicing consistently. Findings underscore coding’s role in empowering individuals to navigate and contribute to the digital world more effectively. The article recommends aspiring coders adopt a structured learning path and engage with practical exercises to build proficiency, positioning themselves in the evolving job market. Keywords: Coding; computer programming; learning resources; problem-solving; technology skills
... Programming environments with novice K-12 programmers as target audience, such as Greenfoot for Java [29], or blockbased approaches like Alice [14], Scratch [38], or Snap [33], have a long history in the educational landscape [37]. ...
Preprint
Full-text available
With the large diversity of platforms and devices used by students, web applications increasingly suggest themselves as the solution of choice. Developing adequate educational programming environments in the browser, however, remains a challenge and often involves trade-offs between desired functionalities and navigating the limitations of web applications, in particular the blocking single-threaded execution model. We introduce a fully browser-based Python programming environment that explores the possibilities and demonstrates that a web application can indeed support a rich and mature set of features, ranging from Turtle graphics over educational robotics to data processing.
... Various tools such as visual programming environments (e.g., Chao, 2016;Sorva et al., 2013), intelligent tutoring systems (e.g., Crow et al., 2018;Hooshyar et al., 2018), and rich text editors and flowcharting tools have been developed to help learners analyse programming tasks, set programming goals, and develop solutions to programming problems (Garcia et al., 2018). It provides learners with rich graphical elements with semantics and rules to enhance meaningful interactions between learners and the environment for modelling, simulation and problem-solving (Chao, 2016;de Raadt, 2007;Kelleher & Pausch, 2005;Robins et al., 2003), promotes learners' regulation of programming cognitive processes (Çakıroğlu & Mücahit, 2017;Garcia et al., 2018;Song et al., 2021a). As a result, this study hypothesizes that students' learning behaviours in the visual learning platform are centred around intrinsic metacognitive or SRL activities. ...
Article
Full-text available
Self-regulated learning (SRL) significantly impacts the process and outcome of programming problem-solving. Studies on SRL behavioural patterns of programming students based on trace data are limited in number and lack of coverage. In this study, hence, the Hidden Markov Model (HMM) was employed to probabilistically mine trace data from a visual programming learning platform, intending to unveil students’ SRL states and patterns during programming problem-solving in a bottom-up manner. Furthermore, the K-means clustering technique was utilized to cluster the Online Self-regulated Learning Questionnaire (OSLQ) survey data, enabling the investigation of prominent behavioural characteristics and patterns among students with differing levels of SRL. The results show that programming problem-solving involves five SRL states: problem information processing, task decomposition and planning, goal-oriented knowledge reconstruction, data modelling and solution formulating. Students with a high level of SRL are more engaged in the problem information processing stage, where they plan task objectives and develop problem-solving strategies by profoundly analyzing the structural relationships of the problem. In contrast, students with low levels of SRL decompose the problem and develop a strategic approach through interacting with the knowledge content, which results in a certain blindness in the problem-solving process.
... In this digital era, programming education has gained importance in universities and is progressively implemented in secondary and primary schools. However, introducing programming at such an early stage presents unique challenges, given the need for students to grasp mathematical concepts, abstract thinking, and the intricacies of programming syntax [1]. A concerning trend has emerged with high failure rates in programming education [2], threatening the supply of qualified software developers and impacting individual students' academic journeys. ...
Conference Paper
Full-text available
In the digital age, programming education has become increasingly important, even in primary schools. However, introducing programming at such an early stage presents unique challenges, given the need for students to grasp mathematical concepts, abstract thinking, and the intricacies of programming syntax. Educational Data Mining (EDM) offers a potential contribution by predicting learning performance, facilitating the optimization of the learning processes, and providing real-time guidance. A notable gap in the current literature about EDM in programming education is its predominant emphasis on the university level. Our research objectives were to identify features influencing primary school students' programming capabilities. A more comprehensive dataset was introduced, incorporating psychometric data and highlighting features such as learning motivation and attitude, computational thinking data, and other potentially influential variables, which set our study apart from previous studies. We found that the strongest predictor was academic performance in Information Technology, followed by psychometric data on students' learning attitudes and motivation. Computational thinking also emerged as a significant feature in predicting programming performance. It's worth highlighting that involvement in extra-curricular activities, like Olympic Mathematics training, showed a significant association, underscoring the importance of mathematical logic and reasoning in programming. This is further bolstered by the evident correlation with academic performance in Mathematics, confirming its pivotal role in shaping programming abilities. Interestingly, the correlation of academic performance in Chinese is also significant, indicating that the language medium of instruction can notably influence success.
... Learning how to understand project flow on top of learning syntax can not only be overwhelming, but discouraging and even outright frightening. These factors set the barrier of entry high for novice programmers 17 . The barrier of entry needs to be lowered for novice programmers so that students and educators can gain programming experience by coding industrial robotics or industrial robotic models. ...
... The conventional teaching mode generally emphasizes semantics and syntax. When encountering the abstract syntax and commands as well as programs with relatively complex structures, beginners can fail to grasp their meanings, reducing their confidence and prompting them to perceive programming as too difficult to learn (Kelleher & Pausch, 2005;Lau & Yuen, 2008). Mathew et al. (2019) maintained that problem-solving skills are a crucial aspect in learning programming. ...
Article
Full-text available
Many students want to enroll in programming courses but fear the challenges ahead. They aspire to design quality systems or games after acquiring related skills but report concerns that programming logic is too difficult to learn because memorization of the syntax is required. Thus, they experience anxiety, are demotivated to learn, and, regretfully, may never enroll in programming courses. Computational thinking (CT) is a favorable method currently used in learning logic. This study proposed an easily implementable standard operating procedure for CT and incorporated it into programming courses; students were instructed and enabled to clarify the logical sequence before beginning to write a program. The standard operating procedure for CT contains five training steps, identify the problem, formulate the problem-solving steps, organize and summarize, draw a flowchart, and write a program. This kind of training can help students clarify the logical order more clearly to facilitate writing programs, thereby improving motivation to learn, reducing learning anxiety, and ultimately improving learning outcomes. The experiment results revealed significant results regarding the learning outcomes, motivation to learn, and learning anxiety of the experimental group learning programming through CT-centered teaching in comparison with those of the group learning through conventional teaching. Additionally, for female students, who were revealed to be initially less capable of logical thinking than male students, the following post intervention improvements were observed: adequate improvement in learning outcomes, increased motivation to learn, and reduced learning anxiety.
... Therefore, it is up to each Swedish teacher to determine how to include programming in technology and in what ways. In this article, programming learning environment (PLE) refers to a specially designed digital platform where a beginner can learn to program (Kelleher & Pausch, 2005). PLEs can be either open [flexible and allowing creativity and experimentation, e.g. ...
Article
Full-text available
There is a recognized need to understand the current state of programming implementation in the Swedish compulsory school system. This study focused specifically on the implementation of programming in the school subject of technology for grades 4–6. In Sweden, the responsibility for choosing teaching and learning material lies with individual teachers. Recent studies have indicated the prevalence of visual programming languages (VPLs) in classrooms. However, no empirical research has specifically investigated why teachers select particular programming learning environments (PLEs) and the challenges they have overcome in this process. Therefore, this study aimed to explore the PLEs used by teachers and the factors influencing their choices. In addition, this study explored the role of pedagogical content knowledge (PCK) and the influence of systemic and situational amplifiers and filters in shaping the programming education landscape, highlighting the importance of understanding these factors for effective implementation. Semi-structured interviews were conducted with 14 experienced programming teachers in grades 4–6 to gather insights. The results revealed that VPLs, particularly Scratch, have been widely adopted, but the study also identified three textual programming languages being utilized. Furthermore, the findings indicate that teachers’ previous education plays a significant role in shaping their PLE preferences. This suggests that programming education in both professional development and preservice teacher training is crucial for effective implementation. By investigating PLE choices and the factors influencing them, this study contributes to a better understanding of the current landscape of programming education in Sweden’s compulsory school system.
... Some of the visual programming languages, such as Scratch and Alice, are block-based languages in the programming environments, of which students can drag and drop coding blocks to the workspace. Thus, novice CS learners can focus on the computational concepts and logic without being bothered by the syntax (Bau et al., 2017;Kelleher & Pausch, 2005). Some research argues that visual programming languages might be more appropriate for novice learners as they are easier to learn (Bau et al., 2017;Chen et al., 2020;Malan & Leitner, 2007). ...
Article
Full-text available
Given the increasing needs of employees with computational skills, understanding the core competencies of K-12 computer science (CS) education is vital. This phenomenological research aims to identify critical factors of CS education in K-12 schools from the perspectives and visions of CS faculties in higher education and teachers in K-12 schools. This study adopted a phenomenological research design. The researchers conducted a semi-structured interview with 13 CS faculties and K-12 CS teachers in Michigan and analyzed the data using thematic analysis. The findings indicated that: (1) the core competencies for K-12 CS education include problem-solving through computational thinking, math background, and foundational programming skills, and (2) what is essential is not the programming languages taught in K-12 schools but computational thinking, which enables the learners to easily transfer from one language environment to another. The findings provide important implications for K-12 CS education regarding the core competencies and programming languages to be taught.
... However, learning to program is a daunting challenge for many researchers. Decades of research have sought to characterize common errors and identify effective ways for novices to learn programming skills [25][26][27][28][29][30]; much remains to be discovered. removed so that students cannot see the solutions for exercises that ChatGPT did not solve. ...
Article
Full-text available
Computer programming is a fundamental tool for life scientists, allowing them to carry out essential research tasks. However, despite various educational efforts, learning to write code can be a challenging endeavor for students and researchers in life-sciences disciplines. Recent advances in artificial intelligence have made it possible to translate human-language prompts to functional code, raising questions about whether these technologies can aid (or replace) life scientists’ efforts to write code. Using 184 programming exercises from an introductory-bioinformatics course, we evaluated the extent to which one such tool—OpenAI’s ChatGPT—could successfully complete programming tasks. ChatGPT solved 139 (75.5%) of the exercises on its first attempt. For the remaining exercises, we provided natural-language feedback to the model, prompting it to try different approaches. Within 7 or fewer attempts, ChatGPT solved 179 (97.3%) of the exercises. These findings have implications for life-sciences education and research. Instructors may need to adapt their pedagogical approaches and assessment techniques to account for these new capabilities that are available to the general public. For some programming tasks, researchers may be able to work in collaboration with machine-learning models to produce functional code.
... It has been shown that multimodal interactions facilitate the understanding of programming concepts [10,11]. The most common practices in Greek schools involve environments with audiovisual feedback [12,13]. This paper explores the use of sound-alerts as a complementary tool to programming courses, and discusses their potential impact on the students' problem solving skills development. ...
Conference Paper
Full-text available
It is considered hard to teach programming in secondary education, while following the steps of the provided curriculum. However, when teaching is supported by suitable methodologies, learning can be ameliorated. Under this premise, this paper discusses a different teaching approach to programming in secondary education and examines the potential benefit of sound-alerts as a complementary teaching tool. Such alerts were created by pairing sound stimuli to specific programming actions and operations. Both the selection of sound stimuli as well as the potential impact of the use of sound alerts on programming were evaluated through perceptual studies. Results showed that participants preferred synthesized to natural (pre-recorded) stimuli for all types of alerts. It was also revealed that users prefer sound-alerts associated to pending actions, errors, and successful code execution , over alerts highlighting a step-by-step execution of the code.
... The search string was defined based on two essential terms of our research questions: (1) active methodologies and (2) teaching of programming. Besides this, to help us, the studies by Kelleher and Pausch (2005), Raj et al. (2018), Tharayil et al. (2018), and Aksit et al. (2016) were used as control articles to support the selection of keywords and synonyms related to the research questions. Therefore, the query was iteratively evolved several times to ensure that a comprehensive set of synonyms was used to allow high coverage. ...
Article
Full-text available
Teaching programming is a complex process requiring learning to develop different skills. To minimize the challenges faced in the classroom, instructors have been adopting active methodologies in teaching computer programming. This article presents a Systematic Mapping Study (SMS) to identify and categorize the types of methodologies that instructors have adopted for teaching programming. We evaluated 3,850 papers published from 2000 to 2022. The results provide an overview and comprehensive view of active learning methodologies employed in teaching programming, technologies, programming languages, and the metrics used to observe student learning in this context. In the results, we identified thirty-seven different ALMs adopted by instructors. We realized that seventeen publications describe teaching approaches that combine more than one ALM, and the most reported methodologies in the studies are Flipped Classroom and Gamification-Based Learning. In addition, we are proposing an educational and collaborative tool called CollabProg, which summarizes the primary active learning methodologies identified in this SMS. CollabProg will assist instructors in selecting appropriate ALMs that align with their pedagogical requirements and teaching programming context.
... However, learning how to program is a rather difficult task. Learners must learn specific programming syntax and rules, in which ambiguous names often cause confusion [7]. Teachers often teach in a traditional manner, that is, they teach by simply using textbooks or worksheets. ...
Article
The ability of computational thinking can be improved through learning programming design and practicing logical thinking and problem-solving skills. However, the cognitive load of programming courses can be heavy, and students from various majors may not have sufficient knowledge about computer science. To address this, innovative teaching methods and content should be considered to reduce learning anxiety and improve motivation and performance. This study aims to redesign the Python programming course. In the first stage, a traditional lecture will be used to teach the basic concepts of programming. The CodeCombat platform will be introduced in the second stage, utilizing game-based learning strategies to teach Python programming. In the third stage, the curriculum will integrate the Pygame module for game design and implementation. After each stage of implementation, students will be given a questionnaire on learning motivation. The questionnaire will collect data on students' motivations, student work, and student thoughts for statistical analysis. According to the statistical results, the overall average score of students' learning motivation in the third stage is the highest, while the first stage has the lowest score. Therefore, it can be concluded that the teaching method of learning programming through game design is most effective in improving students' motivation to learn.
... There is abundant work on CT and integration of Computing and STEM (Lee et al. 2020). A large majority of the work on the integration of Computing and STEM is based on visual programming environments such as Scratch and Alice (Kelleher and Pausch 2005). Little research is reported on students' learning of abstraction and text based programming at the middle-school level (Statter and Armoni 2020). ...
Article
There has been a consensus on integrating Computing into the teaching and learning of STEM (Science, Technology, Engineering and Math) subjects in K-12 (Kindergarten to 12th grade in the US education system). However, rigorous study on the impact of an integrated curriculum on students' learning in computing and/or the STEM subject(s) is still rare. In this paper, we report our research on how well an integrated curriculum helps middle school students learn Computing through the microgenetic analysis methods.
... Есептеу әдістерін, ресурстарды және тиісті құралдар мен платформаларды пайдалана отырып, оқытушылар оқушыларды болашақ табысқа дайындайтын қызықты және тиімді бағдарламалау оқу бағдарламаларын жасай алады. Информатика және бағдарламалау дағдыларына сұраныстың артуы жағдайында Python-ды орта мектепте оқыту оқушыларымыз бен қоғамымыз үшін жарқын болашақ құрудағы маңызды қадам болып табылады [6]. ...
Article
. This article discusses the pedagogical features of the organization of students' project work when teaching the elements of the theory of series at school. The content of the project work of students and guidelines for its implementation in teaching mathematics in a secondary school are presented. The types of design work of students, tasks and stages of their implementation are highlighted. Teaching elements of the theory of series by the design method is a learning system that meets the requirements of the modern system of credit education and is able to meet the tasks set from the point of view of modernity. The article defines the features of the concepts of "project method", "design method", "use of the design method in the classroom" and teaching design technologies. limits for finding the sum of an arithmetic progression. The application of the design method includes a complex of various methods that encourage students to search and research, the design features of special design work (tasks) that put students in a problem situation, and the possibility of getting out of this situation. Attention is paid to the development of students' abilities in the curriculum, with project work. At the same time, project-based learning allows you to evaluate not only the preparatory process, but also the final result of the work of students. This article presents project assignments that form the design and research activities of students.
... Specifically, our evaluation result implies that failure-inducing test cases found by Di erential Prompting can accurately detect failures of programming beginners' programs (which are usually simple programs). Previous studies [15], [16] on software engineering education suggest that those failure-inducing test cases can facilitate a programming beginner's understanding of programming concepts, and help the beginner effectively learn debugging practices. ...
Preprint
Automatically detecting software failures is an important task and a longstanding challenge. It requires finding failure-inducing test cases whose test input can trigger the software's fault, and constructing an automated oracle to detect the software's incorrect behaviors. Recent advancement of large language models (LLMs) motivates us to study how far this challenge can be addressed by ChatGPT, a state-of-the-art LLM. Unfortunately, our study shows that ChatGPT has a low probability (28.8%) of finding correct failure-inducing test cases for buggy programs. A possible reason is that finding failure-inducing test cases requires analyzing the subtle code differences between a buggy program and its correct version. When these two versions have similar syntax, ChatGPT is weak at recognizing subtle code differences. Our insight is that ChatGPT's performance can be substantially enhanced when ChatGPT is guided to focus on the subtle code difference. We have an interesting observation that ChatGPT is effective in inferring the intended behaviors of a buggy program. The intended behavior can be leveraged to synthesize programs, in order to make the subtle code difference between a buggy program and its correct version (i.e., the synthesized program) explicit. Driven by this observation, we propose a novel approach that synergistically combines ChatGPT and differential testing to find failure-inducing test cases. We evaluate our approach on Quixbugs (a benchmark of buggy programs), and compare it with state-of-the-art baselines, including direct use of ChatGPT and Pynguin. The experimental result shows that our approach has a much higher probability (77.8%) of finding correct failure-inducing test cases, 2.7X as the best baseline.
... The statistical numbers indicate that the number of errors made by the MTL group (208 total errors) was less than the number of errors made by the control group (392 total errors). The study in [3] found that a visualisation environment contributes to increasing apprehension and reducing the effort and time consumed during programming lectures. The visualisation also overcomes the barriers to programming, such as mechanical and sociological barriers. ...
Article
Full-text available
There is a high demand for mechanisms that support programming teaching, particularly in finding a solution to the bottleneck in programming education. Nowadays, different methods of teaching can support the learning process and motivate students to learn. These methods improve the thinking and creativity that lead to defining and analysing the problem of supporting programming learning to devise ideal solutions. Approaches such as visualising the code or using a memory diagram to trace the program's execution have made a vital contribution to the process of teaching and learning how to program. The purpose of this paper is to provide an overview of studies that have been conducted in visualisation to support programming learning. Moreover, tools that follow the visualisation and memory-referencing approach will be investigated in this paper.
... The statistical numbers indicate that the number of errors made by the MTL group (208 total errors) was less than the number of errors made by the control group (392 total errors). The study in [3] found that a visualisation environment contributes to increasing apprehension and reducing the effort and time consumed during programming lectures. The visualisation also overcomes the barriers to programming, such as mechanical and sociological barriers. ...
Conference Paper
Full-text available
There is a high demand for mechanisms that support programming teaching, particularly in finding a solution to the bottleneck in programming education. Nowadays, different methods of teaching can support the learning process and motivate students to learn. These methods improve the thinking and creativity that lead to defining and analysing the problem of supporting programming learning to devise ideal solutions. Approaches such as visualising the code or using a memory diagram to trace the program's execution have made a vital contribution to the process of teaching and learning how to program. The purpose of this paper is to provide an overview of studies that have been conducted in visualisation to support programming learning. Moreover, tools that follow the visualisation and memory-referencing approach will be investigated in this paper.
... As a result, several European countries have revised their curricula to include computer programming (Nordén et al., 2017). Programming can be defined as a process in which a human assembles a set of instructions to solve a specific problem with a computer (Buitrago Flórez et al., 2017;Kelleher & Pausch, 2005;Statens Skolverk, 2018b). Nevertheless, in Sweden, programming in compulsory school should be seen as a broader concept that also includes creativity, steering and controlling, simulation, and democratic dimensions (Statens Skolverk, 2017). ...
Article
Full-text available
There is a recognized need for research on how to teach computer programming in primary schools in Sweden grades 4–6 (10–12-year-old pupils). Studies of teaching show the importance of teachers’ knowledge of content and pedagogy and how these two parts affect each other (i.e. pedagogical content knowledge [PCK]). Most teachers in Sweden have little or no formal education in computer programming, the revised Swedish curriculum requires them to teach it. The aim of this study is to explore the pedagogical strategies teachers use when they teach computer programming. Semi-structured interviews were conducted with 14 participants, comprising 12 teachers and 2 teacher trainers. The data were analysed deductively with themes from previous research. The results show that teachers use eight pedagogical strategies, including three new strategies that have been constructed inductively: do-it-yourself, gamification and progression. These eight pedagogical strategies are mostly general, and teachers may be considered regressed experts, as they lack formal training in computer programming. They facilitate learning in a general sense, but, compared to other subjects, their PCK in computer programming is problematized. In-service teacher training is needed to increase content knowledge, thus enabling to develop PCK in computer programming. It would also be fruitful to deepen our knowledge regarding pedagogical strategies in the PCK domain of computer programming.
Article
Full-text available
This article presents a number of innovative methods, practical tasks and recommendations for improving the methodology of teaching algorithmic languages and programming courses. This includes cooperation between the teacher and the students, that is, the teacher should interact with the students to learn algorithmic languages and programming. In order for teachers to effectively teach algorithmic languages and programming courses to students, the article includes practice, determining the purpose of the course, preparing interesting textbooks for students, developing innovative methods to strengthen practical exercises, choosing interactive textbooks, organizing students' practical work, strengthening courses, o Develop recommendations for strengthening students' well-learned programming languages, results and independent learning. The practices presented in the article will help teachers effectively teach algorithmic languages and programming courses.
Conference Paper
Este artigo apresenta a experiência de uma aluna de Ciência da Computação como monitora de robótica para crianças do Ensino Fundamental, destacando os materiais e metodologias utilizadas em aula no Instituto Cristão de Educação - ICE em Imperatriz - MA. O objetivo deste artigo é avaliar a robótica como ferramenta essencial de aprendizagem. As metodologias adotadas incluíram a observação e as rotinas de pensamento em aulas de robótica, analisando seu impacto no ensino-aprendizagem. Nos resultados sugere-se que a Robótica Educacional enriquece o aprendizado, tornando-o dinâmico e criativo, e fornece ao docente recursos para inovar em suas práticas pedagógicas.
Article
Full-text available
Background The pedagogy of computational thinking has gained extensive traction across numerous nations globally, with a particular emphasis on nurturing computational thinking in the formative years of early childhood. Nevertheless, the efficacy of diverse instructional approaches in the domain of programming education, with regards to fostering the advancement of computational thinking abilities in young children, remains a subject of ongoing debate. Objectives The primary aim of this research is to evaluate the efficacy of programming education in fostering computational thinking skills in young children. The central focus revolves around a meticulous exploration of the influence exerted by diverse modalities of programming education on the cultivation of computational thinking abilities in early learners. Methods A total of 32 empirical studies were incorporated into the analysis. Out of these, 77 effect sizes were deemed to meet the predefined inclusion criteria for the present study. The statistical analysis was executed utilizing Stata version 17.0 software. Results and Conclusions The acquisition of programming skills can enhance the advancement of computational thinking in young children (Hedges's g = 0.49, 95% confidence interval [0.40, 0.58]), thereby yielding a moderate effect. When considering the triad of programming education modalities, it becomes evident that graphical programming surpasses both tangible programming and unplugged programming in terms of its efficacy in fostering the growth of computational thinking in young learners. Implications The foregoing contributes significantly to the systematic cultivation and augmentation of computational thinking skills in young children. It establishes a foundational framework for early childhood educators and instructional tool designers to effectively and purposefully impart programming knowledge to children.
Article
Full-text available
The transformative wave of generative AI is reshaping the creative thinking processes of learners, posing a significant challenge to education and industry in cultivating technological literacy and creativity. This study delves into the exploration of how learners can effectively tackle new challenges by deconstructing fragments from a macro perspective and generating innovative methods or concepts. In the Scratch visual programming environment, learners in the self-regulated learning mode observed entire functioning projects, facilitating easy disassembly and learning, namely by using Code Decomposed by Learner (CDBL). A total of 104 fifth-grade students were divided into two learning scaffoldings: (1) domain-general, learning from the top down (CDBL-TD), and (2) domain-specific, learning from the bottom up (CDBL-BU). Students in the CDBL-TD group exhibited a high degree of completion, strong exploration abilities, and the willingness to experiment with unlearned functions. Although there was no significant difference in originality between the two groups, students in the CDBL-TD group showcased greater uniqueness in designing characters or items within the game. This study introduces a novel programming learning scaffolding, offering instructors a tool to guide students’ creativity and enhance their programming capabilities.
Article
Full-text available
O presente trabalho aborda o desenvolvimento do pensamento computacional através do uso do Scratch na introdução à programação. Inicialmente, são apresentados os conceitos de pensamento computacional e Scratch, bem como a importância do desenvolvimento do pensamento computacional para iniciar na programação. Este trabalho também reflete as principais dificuldades de egressos na programação e as principais causas da desistência desses iniciantes. Por fim, são destacadas as vantagens do uso do Scratch no desenvolvimento do pensamento computacional, tais como o estímulo à criatividade, o desenvolvimento de habilidades cognitivas e a promoção da colaboração. Com base nas informações apresentadas, é possível perceber a relevância do uso do Scratch como ferramenta de ensino para a introdução à programação e desenvolvimento do pensamento computacional
Article
Full-text available
O presente trabalho aborda o desenvolvimento do pensamento computacional através do uso do Scratch na introdução à programação. Inicialmente, são apresentados os conceitos de pensamento computacional e Scratch, bem como a importância do desenvolvimento do pensamento computacional para iniciar na programação. Este trabalho também reflete as principais dificuldades de egressos na programação e as principais causas da desistência desses iniciantes. Por fim, são destacadas as vantagens do uso do Scratch no desenvolvimento do pensamento computacional, tais como o estímulo à criatividade, o desenvolvimento de habilidades cognitivas e a promoção da colaboração. Com base nas informações apresentadas, é possível perceber a relevância do uso do Scratch como ferramenta de ensino para a introdução à programação e desenvolvimento do pensamento computacional.
Article
Full-text available
Distance education has long known as an important method. But after the Covid-19 pandemic, its importance has become more than ever. For this reason, the level of teachers' self-efficacy perceptions during distance education has become an issue that needs to be investigated. The aim of the study is to investigate whether there is a relationship between Information Technology teachers' perceptions of general self-efficacy and self-efficacy in coding activities in distance education environments. In addition, the other aims are to determine the difference between the general self-efficacy perceptions of the teachers participating in the research and the self-efficacy perceptions in coding activities in distance education according to their gender, age, seniority, the type of school they work and the number of courses they take related to programming.
Article
Full-text available
Computational thinking has provided a new logical approach to teaching programming. However, certain variables, such as gender and previous experience in robotic programming, may influence its development. The present study was aimed to (1) characterise 164 infant and primary education pre-service teachers in terms of their level of computational thinking, (2) analyse whether there are statistically significant differences according to gender and previous experience in robotics programming, and (3) identify profiles that would allow us to analyse the differences between them and the dimensions of computational thinking. For this purpose, the Computational Thinking Test (CTT) was used. The results of the t-tests revealed that men obtained better results than women and that previous experience in robotics programming is a determining factor in the level of development of the CTT. Furthermore, by means of a two-stage cluster analysis, three profiles were identified among the prospective teachers. The statistical analysis revealed that women who had previous experience and had used programming languages at some point had the best results in the CTT. These findings underline the importance of integrating computational thinking into the training of prospective teachers and adapting teaching strategies according to the specific needs of each group of students.
Article
Although previous research has provided some insights into the effects of block-based and text-based programming modalities, there is a dearth of a detailed, multi-dimensional analysis of the transition process from different introductory programming modalities to professional programming learning. This study employed a quasi-experimental design to address this gap, involving 64 secondary school students in two groups. For the beginning five weeks, the first group used an introductory block-based programming environment, while the second group used an introductory text-based programming environment. Then, both groups transitioned to professional text-based programming for the subsequent eight weeks. The results showed that participants who transitioned from introductory text-based programming to professional text-based programming (1) significantly outperformed in computational thinking skills; (2) had more code-writing and debugging behaviors and fewer irrelevant behaviors, and (3) had more interactions with the instructor. No significant differences were observed between the two groups regarding enjoyment, confidence, and interest in programming. Drawing on these findings, this study proposes pedagogical implications that could facilitate the adoption of programming modalities within the broader context of STEM education.
Article
Preschool children may interact with the Internet of Things (IoT) devices and program the behavior of these products. However, not much is known about the children’s ideas for a software programming tool. This research aimed at investigating how children aged from 4 to 6 years perceive the programming of IoT devices and, from practice with them, build a prototype of a programming environment for them. To this end, three Participatory Design techniques were adapted and applied to (and with) 30 children. A final prototype was built and its usability was assessed with the participation of six children. Photos and videos collected during the empirical assessment were later analysed using the Content Analysis Method. During the design, children relied on buttons and explicitly represented the IoT devices and adults in the user interfaces. They also adopted a top-down approach to programming IoT devices. Lessons learned for the design of these solutions are discussed.
Thesis
Full-text available
Özet: Bu araştırmanın amacı Scratch ile programlama öğretiminin öğrencilerin motivasyon ve programlama başarısına etkisini incelemektir. Araştırmanın çalışma grubunu Mehmet Akif Ersoy Üniversitesi, Eğitim Fakültesi, Bilgisayar ve Öğretim Teknolojileri bölümünde eğitim gören 52 ikinci sınıf öğrencisi oluşturmaktadır. Katılımcılar 26 öğrenci deney ve 26 öğrenci kontrol grubunda olacak Şekilde yansız atama yapılarak iki farklı gruba ayrılmışlardır. Uygulamanın ilk yedi haftalık bölümünde programlama mantığının kazandırılması ve temel programlama yapılarının öğretilmesi amaçlanmıştır. Bu amaçla deney grubundaki katılımcılar Scratch ile oyun tasarımı etkinlikleri, kontrol grubunda yer alan katılımcılar ise mevcut ders programındaki haliyle akış diyagramları ile problem çözme etkinlikleri yapmışlardır. Uygulamanın ikinci yedi haftalık bölümde ise hem kontrol hem de deney grubunda aynı yöntem kullanılarak C# programlama dili öğretimi gerçekleştirilmiştir. Araştırmada veri toplama araçları olarak Başarı Testi, Güdülenme ve Öğrenme Stratejileri Ölçeği ve Odak Grup Görüşme Formu kullanılmıştır. Araştırmada 3 (ölçme zamanı)*2 (grup) faktöriyel desen kullanılmıştır. Hem deney grubunda hem de kontrol grubunda BaŞarı Testi ile Güdülenme ve Öğrenme Stratejileri ölçeği, öntest, sontest ve sontest 2 olmak üzere üç defa uygulanmıştır. Ayrıca hem deney hem de kontrol grubundaki katılımcılar ile ilk yedi haftalık uygulamanın sonunda ve C# programlama öğretiminin yapıldığı ikinci yedi haftalık uygulama sonunda odak grup görüşmeleri yapılmıştır. Araştırmada elde edilen verilerin analizinde çok değişkenli varyans analizi (MANOVA), tek değişkenli varyans analizi (ANOVA) , bağımsız örneklem t-testi, bağımlı örneklem t-testi ve içerik analizi kullanılmıştır. Araştırmada elde edilen bulgulara göre; katılımcıların hem motivasyon hem de başarı puanları; ölçüm zamanına göre, grup değişkenine göre (öğretim yönteminin türüne göre), ölçüm zamanı ve grup değişkeninin etkileşimine göre anlamlı farklılık göstermiştir. Buna göre yapılan basit etki analizi sonucunda katılımcıların motivasyon puanlarının ön testte her iki grupta benzer olduğu, sontest ve sontest 2’de ise deney grubu lehine anlamlı bir farklılık ortaya çıkmıştır. Ayrıca ölçüm zamanı bağlamında kontrol grubunda katılımcıların motivasyon puanlarının tüm uygulama sonunda azaldığı, deney grubunda ise arttığı görülmüştür. Katılımcıların programlama başarı puanları ele alındığında öntestte her iki grupta da benzer olduğu, sontest ve sontest 2’ de ise deney grubu lehine anlamlı bir farklılık olduğu ortaya çıkmıştır. Ölçüm zamanı bağlamında ise hem kontrol hem de deney grubundaki katılımcıların programlama başarı puanlarının tüm uygulama sonunda arttığı görülmüştür. Ayrıca grup değişkeni bağlamında artışın deney grubu lehine anlamlı olarak farklı olduğu görülmüştür. Araştırmanın nitel verileri incelendiğinde deney grubunda yer alan katılımcılar Scratch ile oyun tasarımı etkinliklerinin eğlenceli ve kolay olduğunu, ders süresince yapılan etkinliklerin programlama mantığını kazandırmada ve motivasyonu artırmada etkili olduğunu, ancak bazı temel yapılar için yetersiz olduğunu dile getirmişlerdir. Kontrol grubunda yer alan katılımcılar ise akıŞ diyagramları ile problem çözme sürecinin zor ve sıkıcı olduğunu, ders süresince yapılan etkinliklerde ise aktif olamama ve uygulamanın olmaması gibi sınırlılıkların motivasyonlarını düşürdüğünü belirtmişlerdir. Ayrıca deney grubunda yer alan katılımcılar Scratch ile oyun tasarımı sürecinde edindikleri deneyimin C# programlama öğrenme sürecinde programlama başarılarına katkısının olduğunu belirtmişlerdir. Araştırmanın sonunda uygulamaya ve araştırmalara yönelik önerilerde bulunulmuştur. Anahtar Sözcükler: Programlama, oyun tasarımı, Scratch, akış diyagramları, motivasyon Abstract: The purpose of this study was to investigate the effects of teaching programming with Scratch on students’ motivation and programming achievement. Working group of the research consisted of 52 second graders studying in Mehmet Akif Ersoy University, Faculty of Education, Department of Computer Education and Instructional Technology. Participants were randomly assigned to two groups. There were 26 students in the experimental group and 26 students in the control group. In the first seven weeks of the application, gaining the programming logic and learning the basic programming structures were aimed. To this end, participants in the experimental group made game design activities with Scratch, while participants in the control group made problem-solving activities through the form of flow diagrams in the current curriculum. In the second seven-week section of the application, teaching C# programming language was carried out in both the control and the experimental groups through using the same teaching method. Data collection instruments used in the study were Achievement Test, Motivation and Learning Strategies Scale, and Focus Group Interview form. In the research design, 3(measuring time)* 2(groups) factorial design was used. In both the control group and the experimental group, achievement test and Motivation and Learning Strategies Scale were administered to the participants three times as pre-test, final test and final test 2. In addition, the focus group interviews were conducted with the participants in both control and experimental group at the end of the first seven-week application and at the end of the second seven-week application that involved teaching C# programming. Data were analyzed through multivariate analysis of variance (MANOVA), univariate analysis of variance (ANOVA), independent sample t-test, dependent sample t-test and content analysis for qualitative data. According to the findings obtained in the study, there were significant differences in participants’ motivation and success scores with regard to measurement time, group variable (depends on type of the teaching method), and both measurement time and group interaction. According to the results of simple effect analysis, it was found that motivation scores of the participants were similar in both groups at the pretest. However, in final test and final test 2, there was a meaningful difference in favor of the experimental group. In addition, in terms of the measurement time, motivation scores of the control group decreased at the end of all applications, while it increased in the experimental group. In terms of the programming achievement scores of the participants, the preliminary test was similar in both groups. In the final test and final test 2, a meaningful difference was observed in favor of the experimental group. In addition, in terms of the measurement time, programming achievement scores of participants of both control and experimental groups have increased at the end of the whole application. However, in terms of the increase in the grouping variable, a meaningful difference in favor of the experimental group can be observed. Qualitative data revealed that participants in the experimental group found the game design with Scratch fun and easy. They considered the activities carried out during the course as effective in terms of gaining programming logic and increasing the motivation, but some basic structures were considered insufficient. Participants in the control group reported that flow diagrams and problem-solving processes were difficult and boring, and activities carried out during the course had disadvantages which reduced their motivation such as the inability to be active and to make practice. Participants in the experimental group further stated that the experience gained in the game design process with Scratch contributed to their programming success in learning process of C# programming. At the end of the study, recommendations were made for practice and further research. Keywords: Programming, game design, Scratch, flow diagrams, motivation
Conference Paper
Full-text available
With the rapid development of science and technology over the world, programming education has shown as a trend in decades. Programming courses have been offered in primary education to promote students’ computational thinking skills. However, teaching and learning programming in primary schools involve different knowledge including complex mathematical concepts and programming syntax. Also, traditional teaching methods may not effectively cater for students’ individual needs and learning trajectories. Thus, learning difficulties are common among students. Teachers keep examining innovation on programming education to improve their teaching. This study investigated used a pretest-posttest method with two groups of grade five students in Macao, to compare the influence of two pedagogical strategies, flipped classroom and traditional teaching, in students’ learning achievements. The major findings of the study showed that the experimental group in flipped classroom had significantly higher learning achievements than the control group in the programming course. Moreover, the students in the flipped classroom showed a significant effective mastery of more complex programming concepts, such as conditions and loops.
Chapter
Full-text available
Computer science education has been researched in Israel for a few decades, both at the K-12 and the undergraduate levels. The rich variety of the investigated topics addressed from the very beginning issues beyond the introductory course and programming, including the nature of the discipline and its fundamental ideas and concepts, which are stable, unlike the more technological aspects. Understanding the nature of the discipline and mapping its fundamental ideas and concepts constitute the basis on which curricula stand. Therefore, we chose to organize this chapter around ideas and concepts of CS. In line with this perspective, we will discuss research of all age levels: K-12, undergraduate, and even the graduate level, as well as research relating to teachers. We will present design-based research, which accompanied the design of new curricula, as well as studies aiming at identifying phenomena, or investigating educational hypotheses. We will also point out current challenges and possible future directions.
Article
Full-text available
This study examines the methodological dimensions of programming education articles published in educational sciences journals indexed in SSCI by exploring their general trends. To do this, 162 articles published between January 2012 and February 2020 in 30 international journals indexed in SSCI were analyzed with a systematic review method using the "Educational Technology Publication Classification Form" as a data collection tool. The results revealed that most of the studies in this field were conducted in the USA and Turkey. The number of these studies has increased since 2015, and those studies were carried out using quantitative research methodology. Mostly questionnaires and achievement tests were used as a data collection tool, a convenience sampling method was used, and descriptive analyses were adopted to analyze the data. As a result, the articles examined in this study showed that programming education positively contributes to learners' learning and success levels and the development of their computational thinking skills. We believe that these results will shed light on future studies related to programming education.
Article
Full-text available
Programmers usually type characters on a keyboard to enter, test, and debug computer programs. More than 30 years ago researchers began augmenting those characters with diagram but pure ASCII text is still the ubiquitous standard. This article argues that these attempts to make programming more visual have failed to become mainstream because they are too conservative. Various radical syntaxes for programs are shown to be feasible and offer many advantages over the state of the art.
Article
Full-text available
Beginning in the early 1980s, the Computer Science Department at Carnegie Mellon University developed and used three generations of novice programming environments. The focus of these systems was to apply, advance and tune structure editor technology in support of the teaching and learning of computer programming. The use of these pedagogical systems in Carnegie Mellon's introductory programming courses provided feedback and inspiration to guide the projects. This paper tracks the evolution of the programming environments and courses, documenting important lessons and discoveries about novice programmers and the environments that support them.
Article
Full-text available
TORTIS is a system of special terminals together with software which is designed to provide programming capability and be accesible for use by very young children. The system is designed to add capabilities in small increments so that the child is never overwhelmed by too much to learn at one time, and maintains a feeling of control over the environment. This system facilitates learning of various concepts such as relative size of numbers, frames of reference, procedures, conditionals, and recursion, but more importantly it teaches good problem solving techniques and a healthy approach to learning.
Conference Paper
Full-text available
Electronic Blocks is a new programming interface, designed for children aged between three and eight years. The Electronic Blocks programming environment includes sensor blocks, action blocks and logic blocks. By connecting these blocks, children can program structures that interact with the environment. The Electronic Blocks programming interface design is based on principles of developmentally appropriate practices in early childhood education. As a result, the blocks provide young children with a programming environment that allows them to explore quite complex programming principles. The simple syntax of the blocks provides opportunities for young children that are unavailable through the use of traditional programming languages. The blocks allow children to create and use simple code structures. The Electronic Blocks environment provides a developmentally appropriate environment for planning overall strategies for solving a problem, breaking a strategy down into manageable units, and systematically determining the weakness of the solution. The Electronic Blocks interface is the physical embodiment of computer programming. The blocks have the unique dynamic and programmable properties of a computer, without its complexity
Conference Paper
Full-text available
Although visual programming techniques have been used to lower the threshold of programming for end users, they are not sufficient for creating end user programming environments that are both easy to use and powerful. To achieve this, an environment must support the definition of programs that are not just static representations of behavior, but are instead dynamic collections of program objects which can be applied in a number of contexts rather than just a program editor. We describe an approach to end user programming called tactile programming which extends visual techniques with a unified program manipulation paradigm that makes programs easy to comprehend, compose and, most importantly, share over the World Wide Web. Tactile programming's inherent ability to support the social context in which programming takes place along with its ability to ease program comprehension and composition is what differentiates this approach from others. In the context of the Agentsheets programming substrate, we have created an instance of a tactile programming environment called Visual AgenTalk which is used to create interactive simulations
Article
Full-text available
Forms/3 is a declarative visual programming language that aims to provide generalpurpose programming language capabilities in a simple, form-based approach. This report provides an example-driven introduction to programming in Forms/3. * To whom correspondence should be directed rev. January 1997 Page 1 TABLE OF CONTENTS LIST OF FIGURES ................................................................................................................................ 3 TYPOGRAPHICAL CONVENTIONS........................................................................................................ 3 INTRODUCTION ...............................................................................................4 EXAMPLE 1 - AREA OF A SQUARE: CONCRETENESS AND IMMEDIATE VISUAL FEEDBACK......................................................................................................5 OVERVIEW .................................................................................................
Article
Full-text available
In recent years, a growing number of researchers and educators have argued that design projects provide rich opportunities for learning. To support this type of learning, educational researchers have developed computational environments (such as Logo and LEGO/Logo) that enable children to design their own animated stories, simulations, and even robotic constructions. The rise of the Internet presents an opportunity for new types of design activities, enabling kids to create projects that reach a larger audience than ever before. Some kids are beginning to create their own home pages on the World Wide Web. With the Java programming language, people can now create increasingly sophisticated Web pages with dynamic, interactive content. But Java is intended for expert programmers, not children. This thesis describes a new programming language and environment called Bongo that brings the power of Java to kids. In particular, it discusses a construction kit written in Bongo that enables kids...
Article
Full-text available
In research about the Internet, too much attention is paid to its ability to provide access to information. This thesis argues that the Internet can be used not just as a conduit for information, but as a context for learning through community-supported collaborative construction. A "constructionist" approach to use of the Internet makes particularly good use of its educational potential. The Internet provides opportunities to move beyond the creation of constructionist tools and activities to the creation of "constructionist cultures." These issues are explored through a specific example: MOOSE Crossing, a text-based virtual world (or "MUD") designed to be a constructionist learning environment for children ages 8 to 13. On MOOSE Crossing, children have constructed a virtual world together, making new places, objects, and creatures. Kids have made baby penguins that respond differently to five kinds of food, fortune tellers who predict the future, and the place at the end of the rainbow--- answer a riddle, and you get the pot of gold. This thesis discusses the design principles underlying a new programming language (MOOSE) and client interface (MacMOOSE) designed to make it easier for children to learn to program on MOOSE Crossing. It presents a detailed analysis, using an ethnographic methodology, of children's activities and learning experiences on MOOSE Crossing, with special focus on seven children who participated in a weekly after-school program from October 1995 through February 1997. In its analysis of children's activities, this thesis explores the relationship between construction and community. It describes how the MOOSE Crossing children motivated and supported one another's learning experiences: community provided support for learning through design and...
Article
Full-text available
Many teachers experience serious problems when teaching object orientation to beginners or professionals. Many of these problems could be overcome or reduced through the use of more appropriate tools. In this paper, we introduce BlueJ, an integrated development environment designed for teaching object orientation, and discuss how the use of this tool can change the approach to teaching. 1
Article
Full-text available
Programming is an activity through which students can learn about other domains, but the difficulty of programming diminishes its usefulness as a learning activity. One approach to facilitate the use of programming for learning is to view programming as a skill like those taught through apprenticeships, and to use the apprenticeship concept of scaffolding to facilitate doing and learning through programming. Scaffolding means providing modifiable support (through fading) that communicates process, coaches, and elicits articulation. Software‐realized scaffolding embeds scaffolding in a computer‐based environment. Emile implements software‐realized scaffolding to facilitate student learning of physics by facilitating students building computer‐based models and simulations. In this article, I present Emile's features as examples of software‐realized scaffolding, and I present the results of an evaluation of Emile's effectiveness. Students were able to use Emile to create fairly sophisticated programs and gained a qualitative understanding of kinematics in the process.
Conference Paper
The Icon programming language, which was conceived in 1977, was strongly influenced by the earlier SNOBOL languages and the subsequent SL5. This paper concentrates primarily on the early development of Icon, but also discusses subsequent versions. The motivation, design philosophy, and environmental factors that shaped Icon are emphasized in this paper.
Article
This paper presents an overview of the Alternate Reality Kit (ARK), an animated environment for creating interactive simulations. ARK is built upon a physical-world metaphor: all objects have an image, a position, a velocity, and can experience forces. Users manipulate objects with a mouse-operated “hand” which enables them to carry and throw objects, to press buttons, and to operate sliders. The interface features are discussed in light of a general user interface tension between literalism and magic . Literal features are defined to be those that are true to the interface's metaphor. Literal features enhance an interface's learnability. Magical features are defined to be those capabilities that deliberately violate the metaphor in order to provide enhanced functionality. Discussion of each ARK feature includes informal observations of early ARK users, an assessment of the feature's learnability, of its usefulness, and of its position on the magical-literal axis. Even though ARK includes magical features, applications-level users have be trained in a few minutes. Although this paper is about ARK, the tension between literalism and magic raises some interesting questions on its own. Some of these questions are presented briefly in the conclusion.
Article
Although the structured programming movement has been with us for nearly fifteen years, it's not entirely clear where the term "structured" originated. If one had to choose a single source, the following landmark paper by Edsger Dijkstra would be it. The theme of the paper, which was presented at a 1969 conference sponsored, strangely enough, by the North Atlantic Treaty Organization Science Committee, is intriguing. As Dijkstra points out, exhaustive testing of a computer program is virtually impossible, and testing by "sampling" also is pointless. As he says, "Program testing can be used to show the presence of bugs, but never to show their absence!" And, while rigorous mathematical proofs of program correctness are possible, they are difficult to construct, often because the programs themselves are not well suited to such analysis. So, as Dijkstra explains, rather than first writing a program and then worrying about the difficult task of constructing a proof of program correctness, it makes far better sense to ask, "For what program structures can we give correctness proofs without undue labour..." and then, "How do we make, for a given task, such a wellstructured program ?" With this philosophy as a basis, Dijkstra concludes that program logic (or "sequencing," as he calls it) "should be controlled by alternative, conditional and repetitive clauses and procedure calls, rather than by statements transferring control to labelled points." Although he doesn't describe explicitly the IF-THEN-ELSE construct and the DO-WHILE construct, it is clear what he means. And, while he doesn't mention the implementation of these constructs in programming languages, one assumes that Dijkstra takes it for granted that any reasonable programming language would provide a direct implementation of the necessary control constructs. Perhaps the most interesting concept in this paper comes from Dijkstra's pearl imagery. Dijkstra suggests that we visualize a program as a string of ordered pearls, in which a larger pearl describes the entire program in terms of concepts or capabilities implemented in lower-level pearls. It is clear that we are being shown, by means of a delightful, vivid analogy, the essential concepts of what is now called top-down design. The only thing that detracts from this paper is the repeated emphasis that it is based on experiments with small programs. In itself, this is not surprising. Throughout the literature in the computer field, we see that small programs and small projects are the only ones that can be conducted in a "laboratory" environment. However, the concluding sentence of Dijkstra's paper may have alienated the very people who most need to understand his ideas: " . . . I have given but little recognition to the requirements of program development such as is needed when one wishes to employ a large crowd; I have no experience with the Chinese Army approach, nor am I convinced of its virtues." This quote reminds me of an experience at a recent computer conference, at which one of the speakers described his own approach as a "bottom-up" strategy. What he meant, he said, was that we should begin by attacking very small problems, e.g., those requiring only twenty to thirty program statements, and learn how to solve them properly. Then we could build on that experience, and consider solving larger problems --- those requiring perhaps 100-200 statements; in a few years, with our accumulated wisdom, we might consider working on problems as large as 1,000-2,000 statements. He then gave a brilliant and eloquent presentation of the solution to a twenty-statement problem. When he finished, a member of the audience stood and announced in a loud voice that he had the misfortune of working on a project that probably would result in coding some three million program statements. What did the speaker suggest he do? "Punt!" was the reply. Do you still wonder why it took ten years for anyone to listen to the concepts of structured programming?
Article
Pascal was defined in 1970 and, after a slow start, became one of the most widely used languages in introductory programming courses. This article first summarizes the events leading to Pascal's design and implementation, and then proceeds with a discussion of some of the language's merits and deficiencies. In the last part, developments that followed its release are recounted. Its influence chiefly derived from its being a vehicle for structured programming and a basis for further development of languages and for experiments in program verification.
Article
Tangible computer-human interfaces is an important and active research area. But, few people are working on ways to easily program these systems. My work addresses this need by developing a physical programming language. This research comes out of our work in developing tools for children to build room-sized storytelling environments. In this extended abstract, I will describe the motivation for my research, my proposed work and design methods.
Article
SP/k is a compatible subset of the PL/I language that has been designed for teaching programming. The features of the SP/k language were chosen to encourage structured problem solving by computers, to make the language easy to learn and use, to eliminate confusing and redundant constructs, and to make the language easy to compile. The resulting language is suitable for introducing programming concepts used in various applications, including business data processing, scientific calculations and non-numeric computation. SP/k is actually a sequence of language subsets called SP/1, SP/2, … SP/8. Each subset introduces new programming language constructs while retaining all the constructs of preceding subsets. Each subset is precisely defined and can be learned or implemented without the following subsets.
Chapter
An introduction to programming in PASCAL. The book is arranged as a full programming course including homework problems for the students
Conference Paper
Mondrian is an object-oriented graphical editor that can learn new graphical procedures through programming by demonstration. A user can demonstrate a sequence of graphical editing commands on a concrete example to illustrate how the new procedure should work. An interface agent records the steps of the procedure in a symbolic form, using machine learning techniques, tracking relationships between graphical objects and dependencies among the interface operations. The agent generalizes a program that can then be used on “analogous” examples. The generalization heuristics set it apart from conventional “macros” that can only repeat an exact sequence of steps. The system represents user-defined operations using pictorial “storyboards” of examples. By bringing the power of procedural programming to easy-to-use graphical interfaces, we hope to break down the “Berlin Wall” that currently exists between computer users and computer programmers.
Conference Paper
Visual programming systems are supposed to simplify programming by capitalizing on innate human spatial reasoning skills. I argue that: (i) good visual programming environments should be oriented toward their application domains, and (ii) tools to build domain-oriented environments are needed because building such environments from scratch is very difficult. The demonstration illustrates how the visual programming system builder called Agentsheets addresses these issues and demonstrates several applications built using Agentsheets.
Conference Paper
Fabrik is a visual programming environment - a kit of computational and user-interface components that can be “wired” together to build new components and useful applications. Fabrik diagrams utilize bidirectional dataflow connections as a shorthand for multiple paths of flow. Built on object-oriented foundations. Fabrik components can compute arbitrary objects as outputs. Music and animation can be programmed in this way and the user interface can even be extended by generating graphical structures that depend on other data. An interactive type system guards against meaningless connections. As with simple dataflow, each Fabrik component can be compiled into an object with access methods corresponding to each of the possible paths of data propagation.
Article
Simulations conceptualized as black boxes offer only limited insight to the general public. Without the ability to open up existing simulations or, more ambitiously, to build one's own simulations the true value of simulations remains only accessible to the scientifically-minded members of society possessing programming skills. End-user programming ran significantly enhance the value of simulations by allowing users without traditional programming skills to engage in complex issues through the creation of their own simulations. AgentSheets is an agent-based simulation-authoring tool for end-users. This article provides a brief overview of the AgentSheets environment and illustrates the concept of end-user programming by showing how kids build their own social simulations.
Article
Thesis (M.Eng.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1998. Includes bibliographical references (p. 41).
Article
Thesis (M. Eng. and S.B.)--Massachusetts Institute of Technology, Dept. of Electrical Engineering and Computer Science, 1998. Includes bibliographical references (leaf 69).
Article
A pluralistic approach, design computers from the user's point of view
Conference Paper
ChemTrains is a rule-based language in which both the condition and action of each rule are specified by pictures. A ChemTrain rule will execute when the topology rather than the geometry of a pattern matches a portion of the simulation picture, enabling rules to be drawn at a high level of abstraction. The language is independent of any specific application domain and is accessible to people with limited programming knowledge
Article
This paper presents an overview of the structure and design
Article
Learning to program is hard. Novice programmers have difficulty translating a task's specification into behaviour for the computer that will achieve the task, and translating way the computer should behave into instructions that will make the computer achieve that behaviour. Novices are hindered in both these steps because they lack a good model of the way the computer carries out the instructions in a program. This thesis presents an environment designed to provide novices with a good model of the way a computer carries out a program, and to support them as they learn to program in an imperative language. The environment makes the underlying state and operation of the computer and program explicit. The environment allows the novice to program by demonstrating how the computer should behave. The environment then shows them the instructions that would make the computer behave that way. The thesis presents two models as the basis for the environment: a model of computation, and a model of programming. The model of computation uses a coherent set of analogies from the real world to explain the way a computer carries out a program. The model of programming extends the model of computation to include programming using Programming by Demonstration. The thesis also presents two prototypes of the environment, and an exploration of the models and environment using the prototypes. The thesis presents many issues for a Programming by Demonstration environment for novices that this exploration shed light on. Acknowledgements None of this would have been possible without the following people and institutions: Pondy, who was a better supervisor than I could ever have hoped for. I want to thank him particularly for his guidance and support, for making me explai...
Article
Leogo is a novel programming environment supporting an "equal opportunity" user interface which allows users to express their programming tasks through any mixture of three concurrently active programming paradigms: by direct-manipulation using `programming by demonstration'; by clicking buttons and dragging sliders in an iconic language; and by typing commands in a normal text-based language. Equal opportunity ensures that the e#ects of any interface action are simultaneously displayed across each of the three paradigms---input expressions in one paradigm cause output of equivalent expressions in the other two paradigms. Leogo is designed to promote programming skills in primary and junior schools, but the interface properties it demonstrates are applicable to a wide range of novel programming environments. Leogo's motivation, design, development, and preliminary usability study are described. 2 1 Introduction Programming skills are becoming increasingly important at work...
Robots: Learning to Program with Java. Self-published
  • B Becker
Children's understanding of process in the construction of robot behaviors
  • C Hancock
Etoys and simstories in squeak
  • A Kay
Lego Mindstorms Robotics Invention System
  • Lego Systems
  • Inc
Robocode, IBM Advanced Technologies
  • M Nelson
The early history of cobol History of Programming Languages
  • J Sammet