<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Archiving and Interchange DTD v2.3 20070202//EN" "archivearticle.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="methods-article" dtd-version="2.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Educ.</journal-id>
<journal-title>Frontiers in Education</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Educ.</abbrev-journal-title>
<issn pub-type="epub">2504-284X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/feduc.2025.1498100</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Education</subject>
<subj-group>
<subject>Curriculum, Instruction, and Pedagogy</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Design and application of teaching cases based on heuristic teaching in C programming language curriculums&#x2014;taking the loop structure for an example</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Zhang</surname> <given-names>Feifan</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x002A;</sup></xref>
<uri xlink:href="https://loop.frontiersin.org/people/2842158/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Peng</surname> <given-names>Zhenwan</given-names></name>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Wang</surname> <given-names>Changqing</given-names></name>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Yang</surname> <given-names>Fei</given-names></name>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
</contrib-group>
<aff><institution>School of Biomedical Engineering, Anhui Medical University</institution>, <addr-line>Hefei</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by" id="fn0001">
<p>Edited by: Attila Gilanyi, University of Debrecen, Hungary</p>
</fn>
<fn fn-type="edited-by" id="fn0002">
<p>Reviewed by: Varun Dutt, Indian Institute of Technology Mandi, India</p>
<p>Akash K. Rao, Manipal Academy of Higher Education, India</p>
<p>Jos&#x00E9; Figueiredo, Instituto Polit&#x00E9;cnico da Guarda, Portugal</p>
</fn>
<corresp id="c001">&#x002A;Correspondence: Feifan Zhang, <email>ffz@ahmu.edu.cn</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>19</day>
<month>06</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>10</volume>
<elocation-id>1498100</elocation-id>
<history>
<date date-type="received">
<day>18</day>
<month>09</month>
<year>2024</year>
</date>
<date date-type="accepted">
<day>05</day>
<month>06</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x00A9; 2025 Zhang, Peng, Wang and Yang.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Zhang, Peng, Wang and Yang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>C programming is a general-purpose, processor-oriented, and powerful language, widely used in various daily life applications. As a prerequisite for many core courses in computer science and information technology such as data structures, it serves as a fundamental course for multiple majors in universities globally. However, it remains one of the most challenging subjects to learn and master, with consistently high failure rates being a global problem. To improve learning efficiency and develop problem-solving skills through programming, we implemented a heuristic teaching method incorporating specially designed case studies. The participants were freshmen majoring in Medical Information Engineering at Anhui Medical University. Taking the loop structure as an example, we explain the design of case studies to engage students. The average scores improved from 72.9 to 77.2 between semesters without and with the heuristic teaching approach. Independent <italic>T</italic>-test results confirmed the statistical significance of this improvement. Student evaluations of teaching performance increased from 90.73 to 94.53. These results demonstrate the effectiveness of this heuristic teaching method with specially designed cases. We think that the proposed method may be also suitable for other programming courses.</p>
</abstract>
<kwd-group>
<kwd>C programming</kwd>
<kwd>heuristic teaching method</kwd>
<kwd>cases</kwd>
<kwd>loop-structure</kwd>
<kwd>programming courses</kwd>
</kwd-group>
<counts>
<fig-count count="14"/>
<table-count count="5"/>
<equation-count count="0"/>
<ref-count count="20"/>
<page-count count="8"/>
<word-count count="4988"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Higher Education</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="sec1">
<label>1</label>
<title>Introduction</title>
<p>The C programming language is one of the most widely used programming languages, with applications ranging from embedded systems, operating systems, to performance-critical applications (<xref ref-type="bibr" rid="ref6">Hart et al., 2023</xref>). As a prerequisite for core courses in computer science, information technology, and engineering, such as Data Structures, Single-Chip Microcontroller Systems, and Principles of Microcomputers and Interface Techniques, it serves as a fundamental course for numerous majors in Chinese universities (<xref ref-type="bibr" rid="ref10">Liu et al., 2013</xref>). The primary objectives of C programming courses include developing students&#x2019; programming skills, cultivating computational thinking, and improving the ability to solve complex real-world problems through programming (<xref ref-type="bibr" rid="ref20">Yu et al., 2023</xref>; <xref ref-type="bibr" rid="ref8">Keppens and Hay, 2008</xref>; <xref ref-type="bibr" rid="ref17">Wang et al., 2017</xref>). These competencies are critical for succeeding in follow-up courses. Students who fail to master C programming fundamentals will struggle in subsequent subjects. For instance, students unfamiliar with pointers and structures may require significantly more time to comprehend data structures such as linked lists. Similarly, those lacking proficiency in C syntax will face challenges in Single-Chip Microcontroller Systems, as C serves as the primary programming language in this domain. This demands strong self-motivation and self-discipline. Otherwise, students may experience self-doubt and lose interest in learning. Worse still, subsequent programming-related courses could become insurmountable obstacles, potentially hindering academic progress, career opportunities, and pursuit of advanced degrees.</p>
<p>In fact, C programming is considered one of the most challenging courses for undergraduates (<xref ref-type="bibr" rid="ref3">Dilshodov and Adxamjonov, 2023</xref>; <xref ref-type="bibr" rid="ref18">Xu et al., 2020</xref>). The challenges stem from multiple factors. Unlike natural languages, its complex syntax rules and low-level abstractions create inherent barriers (<xref ref-type="bibr" rid="ref1">Cheah, 2020</xref>). Novice learners often remain confused without sustained practice. Furthermore, since most freshmen lack prior programming experience, and many are accustomed to passive learning, they rarely engage in self-directed C programming practice, preferring step-by-step instructor guidance (<xref ref-type="bibr" rid="ref10">Liu et al., 2013</xref>). Consequently, they struggle with fundamental constructs like loops and arrays, which hampers writing functional functions and procedures. This erodes learning motivation, ultimately affecting career prospects. Additionally, the sheer volume of course content coupled with dry instructional methods exacerbates the issue. Lectures dominated by slide-reading diminish learning engagement, fostering perceptions of C programming as uninteresting. Consequently, students neglect essential practice despite its critical role in mastering programming. This creates a vicious cycle: inadequate practice perpetuates skill gaps, further discouraging learning efforts.</p>
<p>Many methods have been proposed to improve teaching quality. Common approaches for teaching programming include lecture-based instruction, lab sessions, software visualization tools, and problem-based learning frameworks (<xref ref-type="bibr" rid="ref13">Santos et al., 2020</xref>). For example, researchers have introduced adaptive learning activities that incorporate the Revised Bloom Taxonomy (RBT) to align with students&#x2019; cognitive skills in programming education (<xref ref-type="bibr" rid="ref15">Troussas et al., 2020</xref>). Empirical evidence suggests that adaptive teaching methods consistently outperform non-adaptive approaches (<xref ref-type="bibr" rid="ref15">Troussas et al., 2020</xref>). Leveraging the computational power of mobile devices, educators are increasingly adopting educational games. Gamification&#x2014;the integration of game-design elements (e.g., points, badges) into instructional contexts&#x2014;has proven effective in enhancing student engagement and interest (<xref ref-type="bibr" rid="ref5">Elshiekh and Butgerit, 2017</xref>). This strategy has been successfully implemented in C programming courses (<xref ref-type="bibr" rid="ref7">Ibanez et al., 2014</xref>), with studies demonstrating its positive impact on learning outcomes (<xref ref-type="bibr" rid="ref7">Ibanez et al., 2014</xref>). Further research evaluated the gamified Android application C-rocks as a pedagogical tool for C programming (<xref ref-type="bibr" rid="ref14">Talingdan and Llanda, 2019</xref>), concluding that the app significantly improved student performance (<xref ref-type="bibr" rid="ref14">Talingdan and Llanda, 2019</xref>). Similarly, the App Inventor platform has been utilized to motivate engineering students through game-based C syntax learning (<xref ref-type="bibr" rid="ref4">Dolgopolovas et al., 2018</xref>). Additionally, precision teaching frameworks grounded in behavioral psychology principles have been developed for programming education (<xref ref-type="bibr" rid="ref20">Yu et al., 2023</xref>). These frameworks operationalize three structured teaching phases and five core instructional skills, resulting in enhanced teacher-student interactions and higher learning efficiency compared to traditional classrooms (<xref ref-type="bibr" rid="ref20">Yu et al., 2023</xref>). Despite these innovations, a substantial proportion of students continue to struggle with acquiring programming competencies and failing course assessments. Emerging approaches such as heuristic teaching&#x2014;recently validated in domains like Chinese composition (<xref ref-type="bibr" rid="ref19">Xue, 2022</xref>)&#x2014;may offer promising solutions for programming education. The heuristic teaching method has been demonstrated as a highly effective approach for improving pupils&#x2019; teamwork skills through structured organization of physical education lessons (<xref ref-type="bibr" rid="ref2">D&#x2019;Isanto et al., 2022</xref>). Heuristic learning, a learner-centered pedagogy, enables students to actively construct knowledge, redefine curricular objectives, and autonomously develop learning frameworks via self-directed processes that integrate continuous diagnosis, metacognitive reflection, and systematic knowledge organization (<xref ref-type="bibr" rid="ref12">Pisarenko and Zatona, 2024</xref>). This method offers distinct advantages, including fostering student initiative, stimulating intrinsic motivation, and facilitating self-actualization within the learning process (<xref ref-type="bibr" rid="ref12">Pisarenko and Zatona, 2024</xref>). Broadly defined, heuristics represent experience-based problem-solving strategies that guide cognitive exploration (<xref ref-type="bibr" rid="ref16">Wakhata et al., 2023</xref>). The concept of heuristics traces its origins to an ancient Greek philosophical paradox: &#x201C;How can we search for what we do not know, and if we know what we are looking for, then why should we look for it?&#x201D; (summarized as the science of discovery) (<xref ref-type="bibr" rid="ref11">Nokhatbayeva, 2020</xref>). Its pedagogical roots lie in Socratic dialogs, where knowledge emerged through resolving contradictions in discourse (<xref ref-type="bibr" rid="ref11">Nokhatbayeva, 2020</xref>). In modern education, the Socratic method informs the design of heuristic activities, exemplified by mathematician George P&#x00F3;lya&#x2019;s systematic heuristic framework for problem-solving through sequenced questioning aimed at cultivating critical thinking (<xref ref-type="bibr" rid="ref11">Nokhatbayeva, 2020</xref>). As articulated by Russian psychologist Kapterev, &#x201C;Heuristic form of teaching is one in which scientific laws, formulas, rules and truths are discovered and developed by the students themselves under the guidance of the teacher&#x201D; (<xref ref-type="bibr" rid="ref11">Nokhatbayeva, 2020</xref>). While this approach has profoundly influenced mathematics education (<xref ref-type="bibr" rid="ref11">Nokhatbayeva, 2020</xref>), its application to C programming courses remains unexplored to date. Given heuristic teaching&#x2019;s capacity to enhance learning motivation, promote active engagement through self-discovery, and improve academic outcomes, this study designs a heuristic-based instructional framework. We exemplify this methodology through a case study on loop structure instruction, detailing its pedagogical design and practical implementation.</p>
<p>The remaining of the paper is organized as follows. In Section 2, we will explain the design and application of heuristic teaching in the programming courses. The teaching of loop structure is taken as an example. The results and discussions are shown in Section 3. And the conclusions are shown in Section 4.</p>
</sec>
<sec sec-type="materials|methods" id="sec2">
<label>2</label>
<title>Materials and methods</title>
<p>In designing and implementing heuristic teaching methods, we integrate principles from the Contextual Teaching and Learning (CTL) model and Problem-Based Learning (PBL) framework. The philosophical foundation of CTL lies in constructivism, which emphasizes knowledge construction through contextual connections&#x2014;bridging abstract concepts with lived experiences or real-world applications&#x2014;rather than rote memorization (<xref ref-type="bibr" rid="ref9">Kia, 2023</xref>). PBL, grounded in cognitive psychology, adopts a &#x201C;problem-driven learning&#x201D; paradigm that inverts traditional instruction by prioritizing problem exploration before knowledge transmission. By synthesizing heuristic methods with CTL and PBL, we formulated the following pedagogical tenets for C programming:<list list-type="order">
<list-item>
<p>Problem Contextualization: Embed syntax learning within authentic programming scenarios to stimulate cognitive engagement (shifting focus from &#x201C;how&#x201D; to &#x201C;why&#x201D;).</p>
</list-item>
<list-item>
<p>Progressive Task Decomposition: Implement stepwise complexity escalation&#x2014;from code imitation to creative implementation&#x2014;by modularizing systems and gradually elevating abstraction levels.</p>
</list-item>
<list-item>
<p>Error-Driven Discovery: Leverage coding errors as diagnostic tools for self-directed learning, enabling students to autonomously uncover syntactic and logical principles.</p>
</list-item>
<list-item>
<p>Multimodal Knowledge Representation: Demystify abstract concepts through schematic diagrams, algorithm animations, and tangible analogies (e.g., physical models of loop execution).</p>
</list-item>
</list></p>
<p>As the loop structure constitutes one of the three fundamental constructs in structured programming and serves as the conceptual foundation for subsequent chapters (e.g., arrays and linked lists), we select it as a paradigmatic case to demonstrate the design and implementation of heuristic pedagogy in C programming. Prior to this instructional unit, students have achieved mastery of sequential and selection structures. The proposed lesson plan spans 120&#x202F;min. At the beginning of the loop structure, we show a clip from the movie Edge of Tomorrow to show the cycle of death and resurrection. Then, we show students a clock with second hands keeping running (lasts about 5&#x202F;min). Thus, students would have an intuitive sense of the loop. Next, we tell students about the story of Gauss and ask them to list the solutions they can think of for the calculation of the sum of 1 to 100. After students share three or four solutions, we ask them to think about how we can solve this problem by C programming. Assuming that we do not know the sum formulas of arrays, students will try to write a sequential structure program as they have learned the sequential structure. One possible sequential program example is shown in <xref ref-type="table" rid="tab1">Table 1</xref>.</p>
<table-wrap position="float" id="tab1">
<label>Table 1</label>
<caption>
<p>A possible C program for calculating the accumulation of 1 to 100 written by students.</p>
</caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Program: calculating the sum of 1 to 100</bold></td>
</tr>
<tr>
<td align="left" valign="top">#include&#x003C;stdio.h&#x003E;<break/>int main(){<break/>int sum=0;<break/>sum=sum+1;<break/>sum=sum+2;<break/>sum=sum+3;<break/>&#x2026;..<break/>sum=sum+100;<break/>return 0;<break/>}</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Note that the programming tasks can be completed in class since students can implement them on their mobile phones with C compilers installed. After they finish the tasks, we ask students to analyze the disadvantages of the program in <xref ref-type="table" rid="tab1">Table 1</xref>. One disadvantage is its excessive length due to repetitive expressions. Another drawback is that calculating the sum from <inline-formula>
<mml:math id="M1">
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> to <inline-formula>
<mml:math id="M2">
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>000</mml:mn>
</mml:math>
</inline-formula> would require writing numerous similar statements (this phase lasts about 10&#x202F;min). We then ask students to identify the commonality among these statements. These can be generalized as <inline-formula>
<mml:math id="M3">
<mml:mi mathvariant="italic">sum</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">sum</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula>, where <inline-formula>
<mml:math id="M4">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> takes values <inline-formula>
<mml:math id="M5">
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mn>100</mml:mn>
</mml:math>
</inline-formula>. Thus, the result can be computed by iteratively executing these generalized statements with incrementing <inline-formula>
<mml:math id="M6">
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> values. This process forms a loop, as it repeatedly executes two operations: <inline-formula>
<mml:math id="M7">
<mml:mi mathvariant="italic">sum</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">sum</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>i</mml:mi>
</mml:math>
</inline-formula> and <inline-formula>
<mml:math id="M8">
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> &#x2014; analogous to the cycle of death and rebirth or the movement of a clock&#x2019;s second hand. Through this analogy, the loop structure is introduced, enabling students to better grasp its execution mechanism. Finally, we provide students with the optimized program solving this problem, as shown in <xref ref-type="table" rid="tab2">Table 2</xref>.</p>
<table-wrap position="float" id="tab2">
<label>Table 2</label>
<caption>
<p>A possible C program with loop structure written for the accumulation of 1 to 100.</p>
</caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Program: calculating the sum of 1 to 100</bold></td>
</tr>
<tr>
<td align="left" valign="top">#include&#x003C;stdio.h&#x003E;<break/>int main(){<break/>int sum=0;<break/>for(i=1; i&#x003C;=100; i++)<break/>&#x2003;sum+=i;<break/>return 0;<break/>}</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Substantially, based on the program shown in <xref ref-type="table" rid="tab2">Table 2</xref>, we describe the execution process of the for-loop structure in detail using debugging within the integrated development environment (IDE) Dev C++, which directly displays the changes in variables such as i. This approach helps students better understand the for-loop structure. After that, we guide students to summarize the syntax and characteristics of the for-loop structure. Based on this summary, we visually demonstrate the execution process using an animated flowchart in PowerPoint, showing the workflow with a red point traversing the diagram. Next, we ask students to modify the program to calculate the sum of numbers from 1 to 1,000 using the C compiler installed on their mobile phones. We then propose extension challenges sequentially: calculating the sum of odd numbers and even numbers within <inline-formula>
<mml:math id="M9">
<mml:mo stretchy="true">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>000</mml:mn>
<mml:mo stretchy="true">]</mml:mo>
</mml:math>
</inline-formula>. Once these problems are solved, students gain familiarity with the basic usage of the for-loop structure. Furthermore, we allocate 5 min for them to practice calculating the sum of numbers divisible by five within <inline-formula>
<mml:math id="M10">
<mml:mo stretchy="true">[</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>000</mml:mn>
<mml:mo stretchy="true">]</mml:mo>
</mml:math>
</inline-formula>. This exercise not only reinforces their mastery of the for-loop structure but also revisits the selection structure through checking divisibility by five. The entire process lasts about 25&#x202F;min.</p>
<p>After finishing the practice, we teach students the knowledge of the while-loop structure and do-while loop structure through multimedia technology such as animated flowcharts with a red point indicating execution progress. To better master the while-loop and do-while loop, students are asked to implement the functionality of the above programs using different loop structures. Furthermore, students are asked to compare the differences between these three loop structures (lasting about 20&#x202F;min). Then, we ask students to write a program that outputs a 10-star pattern using a loop structure, as the visual patterns are intuitive (<xref ref-type="fig" rid="fig1">Figure 1</xref>). They can use any of the three loop structures. We demonstrate the while-loop structure as an example (<xref ref-type="table" rid="tab3">Table 3</xref>).</p>
<fig position="float" id="fig1">
<label>Figure 1</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g001.tif"/>
</fig>
<table-wrap position="float" id="tab3">
<label>Table 3</label>
<caption>
<p>A possible C program with while-loop structure written for outputting 10 stars.</p>
</caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Program: calculating the sum of 1 to 100</bold></td>
</tr>
<tr>
<td align="left" valign="top">#include&#x003C;stdio.h&#x003E;<break/>int main(){<break/>int sum=0;<break/>for(i=1; i&#x003C;=100; i++)<break/>&#x2003;sum+=i;<break/>return 0;<break/>}</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>After demonstrating the execution process with Dev C++, we ask students to design a program that outputs an 8-row by 10-column star pattern (<xref ref-type="fig" rid="fig2">Figure 2</xref>). We invite three students to demonstrate how they would write this program. After their presentations, we provide a solution where one loop controls the rows and a nested loop within it controls the number of stars per row, similar to the previous program. Through this, we introduce the concept of nested loops&#x2014;embedding additional loops inside a primary loop statement&#x2014;to achieve multi-level data traversal and processing. We then explain the core principles of nested loops. Subsequently, we provide students with an example program (<xref ref-type="table" rid="tab4">Table 4</xref>) intended to print <xref ref-type="fig" rid="fig2">Figure 2</xref>, but containing intentional errors. When students execute the given program, they observe that only a single line of 10 stars (<xref ref-type="fig" rid="fig3">Figure 3</xref>) is printed instead of the expected pattern. We ask them to diagnose why the output differs from the target by debugging the program and monitoring changes in loop control variable values.</p>
<fig position="float" id="fig2">
<label>Figure 2</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g002.tif"/>
</fig>
<table-wrap position="float" id="tab4">
<label>Table 4</label>
<caption>
<p>A C program outputting <xref ref-type="fig" rid="fig3">Figure 3</xref>.</p>
</caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Program: output 10 stars with while-loop structure</bold></td>
</tr>
<tr>
<td align="left" valign="top">#include &#x003C;stdio.h&#x003E;<break/>int main ( ){<break/>&#x2003;int i = 1, j = 1;<break/>&#x2003;while(i&#x003C;=8) {<break/>&#x2003;&#x2003;while (j&#x003C;=10){<break/>&#x2003;&#x2003;&#x2003;putchar('&#x002A;');<break/>&#x2003;&#x2003;&#x2003;j++;<break/>&#x2003;&#x2003;}<break/>&#x2003;&#x2003;putchar('\n');<break/>&#x2003;&#x2003;i++;<break/>&#x2003;}<break/>&#x2003;return 0;<break/>}</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig position="float" id="fig3">
<label>Figure 3</label>
<caption>
<p>The pattern output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g003.tif"/>
</fig>
<p>Subsequently, a student is randomly selected to explain their reasoning. We then analyze the program and clarify the reason: a loop terminates when its continuation condition becomes false. Specifically, after the inner loop completes execution, the value of its control variable no longer meets the loop&#x2019;s continuation condition. When the outer loop iterates again, the inner loop&#x2019;s control variable must be reinitialized. Students are therefore instructed to modify the program in <xref ref-type="table" rid="tab4">Table 4</xref>. Next, we ask them to implement the same functionality using a for-loop structure and determine whether this issue persists with for loops. This ensures students fully comprehend nested loop execution and develop awareness of loop control variable management. Following this, based on <xref ref-type="fig" rid="fig2">Figure 2</xref>, students are tasked with writing a program to output <xref ref-type="fig" rid="fig4">Figure 4</xref>. They then progress incrementally to develop programs for <xref ref-type="fig" rid="fig5">Figures 5</xref>&#x2013;<xref ref-type="fig" rid="fig6"/><xref ref-type="fig" rid="fig7">7</xref>. Note that <xref ref-type="fig" rid="fig5">Figure 5</xref> differs from <xref ref-type="fig" rid="fig4">Figure 4</xref> in that the number of lines is dynamically determined by user input.</p>
<fig position="float" id="fig4">
<label>Figure 4</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g004.tif"/>
</fig>
<fig position="float" id="fig5">
<label>Figure 5</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g005.tif"/>
</fig>
<fig position="float" id="fig6">
<label>Figure 6</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g006.tif"/>
</fig>
<fig position="float" id="fig7">
<label>Figure 7</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g007.tif"/>
</fig>
<p>After completing the previously mentioned patterns, we increase the complexity of programming practice by integrating character manipulation with standard I/O operations. Students are tasked with generating patterns composed of characters (<xref ref-type="fig" rid="fig8">Figure 8</xref>). Next, they are required to produce patterns based on a user-input uppercase letter&#x2014;for example, inputting &#x201C;G&#x201D; generates the pattern in <xref ref-type="fig" rid="fig9">Figure 9</xref>. To account for potential errors, the program prompts users to re-enter if the input is non-uppercase, continuing this validation loop until valid data is received (<xref ref-type="fig" rid="fig10">Figure 10</xref>). Through this exercise, students progressively learn to design interactive menus using loop structures and selection statements (taught prior to loops). The entire activity is designed to be completed within approximately 60&#x202F;min.</p>
<fig position="float" id="fig8">
<label>Figure 8</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g008.tif"/>
</fig>
<fig position="float" id="fig9">
<label>Figure 9</label>
<caption>
<p>The pattern to be output.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g009.tif"/>
</fig>
<fig position="float" id="fig10">
<label>Figure 10</label>
<caption>
<p>The pattern to be output according to the character input.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g010.tif"/>
</fig>
<p>Throughout these heuristic teaching activities, students actively engage in thinking, learning, and practicing during class. With frequent questioning and interactive practices progressing incrementally from simple to complex tasks, students remain motivated and cognitively engaged. Finally, we assign homework requiring them to generate a specific pattern based on a user-input uppercase character (<xref ref-type="fig" rid="fig11">Figure 11</xref>).</p>
<fig position="float" id="fig11">
<label>Figure 11</label>
<caption>
<p>The pattern to be output according to the character input.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g011.tif"/>
</fig>
</sec>
<sec sec-type="results" id="sec3">
<label>3</label>
<title>Results and discussions</title>
<p>We began teaching C programming courses to Medical Information Engineering majors at Anhui Medical University in the fall 2021 semester. Based on preliminary surveys conducted during the first class, these freshmen (predominantly from Anhui Province) had minimal programming exposure, with C programming being their first formal coding course. Most lacked foundational computer science knowledge. By the semester&#x2019;s end, we observed persistent difficulties in their ability to acquire programming skills and develop computational problem-solving competencies. Consequently, we implemented pedagogical reforms for the 2022 fall semester cohort of the same program (comprising students mainly from Anhui Province, with one exception from Shanxi Province). Adopting heuristic teaching methodologies with customized case studies, we maintained instructional continuity as outlined in Section II. Notably, due to logistical constraints&#x2014;including shared theoretical coursework with master&#x2019;s degree students&#x2014;we could not conduct parallel controlled experiments within the same semester (i.e., traditional vs. reformed methods). Furthermore, implementing differential teaching approaches risked student objections, as course grades directly impacted scholarship eligibility. Therefore, uniform instructional strategies were applied within each cohort. However, the students of the 2021 and 2022 fall semesters can be seen as two contrast groups to a certain extent because they are taught by the same teacher with the same teaching hours. Only the teaching methods are different. In fact, these students are with the same curriculum. The C programming lessons are both 45 teaching hours. Thus, the examination scores and student evaluation scores of teaching performance are used as indicators to show the efficiency of the proposed teaching methods. Note that each topic in the 2022 fall semesters was taught by the same teacher consistent with that in the 2021 fall semesters. Moreover, the examination papers have the same level of difficulty with the same emphasis. The examination scores are shown in <xref ref-type="table" rid="tab5">Table 5</xref>.</p>
<table-wrap position="float" id="tab5">
<label>Table 5</label>
<caption>
<p>Examination scores of C programming courses of two different semesters.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="top">Semester</th>
<th align="center" valign="top">Number of students</th>
<th align="center" valign="top">Average scores</th>
<th align="center" valign="top">The highest score</th>
<th align="center" valign="top">The lowest score</th>
<th align="center" valign="top">Standard deviation</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top">2021 fall</td>
<td align="center" valign="top">59</td>
<td align="center" valign="top">72.9</td>
<td align="center" valign="top">94</td>
<td align="center" valign="top">53</td>
<td align="center" valign="top">9.0</td>
</tr>
<tr>
<td align="left" valign="top">2022 fall</td>
<td align="center" valign="top">88</td>
<td align="center" valign="top">77.2</td>
<td align="center" valign="top">96</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">9.9</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>As shown in <xref ref-type="table" rid="tab5">Table 5</xref>, the average examination scores for C programming courses in 2021 and 2022 were 72.9 and 77.2, respectively. While differences in scores could theoretically arise from factors like student backgrounds, instructor variations, or teaching methodologies, several observations suggest these variables were controlled: All students except one originated from Anhui Province; both cohorts consisted of Medical Information Engineering freshmen with comparable age profiles (average ages 17.91 in 2021 vs. 17.90 in 2022) and minimal programming experience. The 2021 cohort included 59 students (30 male, 29 female), while the 2022 cohort had 88 students (52 male, 36 female). Crucially, the same instructor delivered all course content. Given these stabilized conditions, the 4.3-point score increase in 2022 implies the heuristic teaching reforms contributed to improved outcomes. Statistical validation was conducted through a one-tailed <italic>t</italic>-test (justified by similar standard deviations: 9.1 for 2021 vs. 9.9 for 2022), yielding a <italic>p</italic>-value of 0.00447&#x2014;significantly below the 0.05 threshold. The 95% confidence interval <inline-formula>
<mml:math id="M11">
<mml:mo stretchy="true">[</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x221E;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1.61</mml:mn>
<mml:mo stretchy="true">]</mml:mo>
</mml:math>
</inline-formula> indicates the 2021 cohort&#x2019;s mean score was at least 1.61 points lower than 2022&#x2019;s. A Cohen&#x2019;s d value of 1.38 confirms a large effect size. Supporting evidence emerges from score distributions: the 2021 modal range was 70&#x2013;79 (<xref ref-type="fig" rid="fig12">Figures 12</xref>, <xref ref-type="fig" rid="fig13">13</xref>), shifting to 80&#x2013;89 in 2022. Notably, both the highest and lowest scores in 2022 marginally surpassed 2021&#x2019;s extremes. These findings collectively demonstrate the pedagogical effectiveness of the redesigned heuristic teaching framework.</p>
<fig position="float" id="fig12">
<label>Figure 12</label>
<caption>
<p>The score distribution.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g012.tif"/>
</fig>
<fig position="float" id="fig13">
<label>Figure 13</label>
<caption>
<p>The percentage of score ranges.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g013.tif"/>
</fig>
<p>We also find that although students of the same semester attend the same classrooms together, however, the scores differ with classes (<xref ref-type="fig" rid="fig14">Figure 14</xref>). For freshmen of the 2021 fall semester, they were divided into two small classes. The average scores of these two classes are 71.93 and 73.86, respectively. For freshmen of the 2022 fall semester, they were divided into three classes. The average scores of these three classes are 79.17, 77.79, and 74.31. As students of the same semester attended theory classes of C programming together, they were instructed with the same teaching contents and methods. However, the scores are still different. We guess that this may be caused by class discipline and academic atmosphere as they doing C programming practice in the units of classes. According to our experience in experimental programming classes, for classes with higher scores, more students would ask questions or discuss problems during programming. In contrast, some students were addicted to mobile video games. Some of them even tried to play mobile video games when others were programming. Of course, they would be stopped from playing games in classes. Thus, we think the differences in examination scores between classes of the same semester may be caused by class discipline and academic atmosphere. This will be our future research direction to further improve the teaching efficiency while analyzing factors affecting teaching efficiency and minimizing the difference between classes. Also, we need to develop more suitable evaluation approaches such as formative assessment and project assessment into our teaching process in the future research. This is one of the limitations of the work.</p>
<fig position="float" id="fig14">
<label>Figure 14</label>
<caption>
<p>The relationship between scores and classes.</p>
</caption>
<graphic xlink:href="feduc-10-1498100-g014.tif"/>
</fig>
<p>After the C programming course concluded, students were asked to evaluate teaching performance through scoring. Following the implementation of the proposed method, teaching evaluation scores increased from 90.73 to 94.53. Many students noted that complex concepts became easier to understand as the designed cases and targeted analyses by teachers effectively connected abstract theories with practical understanding. Some students highlighted that the praxis-oriented approach, integrating theoretical frameworks with contextualized applications, strengthened their learning processes. Student feedback further confirms the efficacy of these teaching methods. The proposed method may be applied to other computer science courses. For example, object-oriented programming classes such as Python and Java also involve loop structures. The teaching process can be adapted to suit these courses. The framework can further extend to data structure instruction. For instance, animations may directly demonstrate linked list operations or binary tree traversal, while physical analogies (e.g., stacking plates) could explain stack push/pop mechanisms. This approach thus helps students better understand abstract concepts.</p>
</sec>
<sec sec-type="conclusions" id="sec4">
<label>4</label>
<title>Conclusion</title>
<p>The C programming language has various applications and is also a prerequisite for courses such as Data Structures, Object-oriented Programming, and Embedded Systems. However, C programming remains one of the most difficult courses in many majors, with a high failure rate. Failure to learn C programming may not only decrease students&#x2019; motivation in learning programming languages but also increase the difficulty of mastering knowledge related to subsequent courses. Furthermore, this may affect their future career prospects.</p>
<p>To improve the teaching efficiency of C programming classes offered to freshmen majoring in Medical Information Engineering at Anhui Medical University, we designed teaching cases based on heuristic teaching methods and implemented them starting in the 2022 fall semester. Since the loop structure is foundational for subsequent topics such as arrays and pointers, we used it as an example to demonstrate case design strategies and stimulate students&#x2019; learning interest. We utilized examination scores as an indicator to evaluate the effectiveness of the designed cases and heuristic teaching methods. As the students were freshmen with no prior programming experience, this metric is valid. Results indicate that with the heuristic-based cases, the average score rose from 72.9 (2021) to 77.2 (2022), while teaching evaluation scores increased from 90.73 to 94.53. This demonstrates that the heuristic teaching cases significantly enhance instructional efficiency in C programming courses. We believe these methods could inform pedagogy in other computer-related subjects.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="sec5">
<title>Data availability statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec sec-type="author-contributions" id="sec6">
<title>Author contributions</title>
<p>FZ: Methodology, Writing &#x2013; original draft. ZP: Methodology, Writing &#x2013; original draft. CW: Methodology, Writing &#x2013; original draft. FY: Methodology, Writing &#x2013; original draft.</p>
</sec>
<sec sec-type="funding-information" id="sec7">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research and/or publication of this article. This research was funded by Department of Education Anhui Province, grant numbers 2023zyxwjxalk039, 2023jyxm0235, and 2022jyxm710. This research was also funded by Anhui Medical University, grant number 2024xjxm117.</p>
</sec>
<ack>
<p>We appreciate the editors and reviewers for their earnest work and insightful comments. We appreciate Deepseek for helping us correcting grammar errors.</p>
</ack>
<sec sec-type="COI-statement" id="sec8">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="sec9">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="ref1"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cheah</surname> <given-names>C. S.</given-names></name></person-group> (<year>2020</year>). <article-title>Factors contributing to the difficulties in teaching and learning of computer programming: a literature review</article-title>. <source>Contemp. Educ. Technol.</source> <volume>12</volume>:<fpage>ep272</fpage>. doi: <pub-id pub-id-type="doi">10.30935/cedtech/8247</pub-id></citation></ref>
<ref id="ref2"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>D&#x2019;Isanto</surname> <given-names>T.</given-names></name> <name><surname>Aliberti</surname> <given-names>S.</given-names></name> <name><surname>Altavilla</surname> <given-names>G.</given-names></name> <name><surname>Esposito</surname> <given-names>G.</given-names></name> <name><surname>D&#x2019;Elia</surname> <given-names>F.</given-names></name></person-group> (<year>2022</year>). <article-title>Heuristic learning as a method for improving students&#x2019; teamwork skills in physical education</article-title>. <source>Int. J. Environ. Res. Public Health</source> <volume>19</volume>:<fpage>12596</fpage>. doi: <pub-id pub-id-type="doi">10.3390/ijerph191912596</pub-id>, PMID: <pub-id pub-id-type="pmid">36231894</pub-id></citation></ref>
<ref id="ref3"><citation citation-type="other"><person-group person-group-type="author"><name><surname>Dilshodov</surname> <given-names>A.</given-names></name> <name><surname>Adxamjonov</surname> <given-names>M.</given-names></name></person-group> (<year>2023</year>). &#x201C;<article-title>Application of the opengl library in the course of programming and computer simulation</article-title>&#x201D; in <source>Engineering Problems and Innovations</source>, <fpage>112</fpage>&#x2013;<lpage>114</lpage>.</citation></ref>
<ref id="ref4"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dolgopolovas</surname> <given-names>V.</given-names></name> <name><surname>Jevsikova</surname> <given-names>T.</given-names></name> <name><surname>Dagiene</surname> <given-names>V.</given-names></name></person-group> (<year>2018</year>). <article-title>From android games to coding in C&#x2014;an approach to motivate novice engineering students to learn programming: a case study</article-title>. <source>Comput. Appl. Eng. Educ.</source> <volume>26</volume>, <fpage>75</fpage>&#x2013;<lpage>90</lpage>. doi: <pub-id pub-id-type="doi">10.1002/cae.21862</pub-id></citation></ref>
<ref id="ref5"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Elshiekh</surname> <given-names>R.</given-names></name> <name><surname>Butgerit</surname> <given-names>L.</given-names></name></person-group> (<year>2017</year>). <article-title>Using gamification to teach students programming concepts</article-title>. <source>Open Access Library J.</source> <volume>4</volume>, <fpage>1</fpage>&#x2013;<lpage>7</lpage>. doi: <pub-id pub-id-type="doi">10.4236/oalib.1103803</pub-id></citation></ref>
<ref id="ref6"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hart</surname> <given-names>R.</given-names></name> <name><surname>Hays</surname> <given-names>B.</given-names></name> <name><surname>McMillin</surname> <given-names>C.</given-names></name> <name><surname>Rezig</surname> <given-names>E. K.</given-names></name> <name><surname>Rodriguez-Rivera</surname> <given-names>G.</given-names></name> <name><surname>Turkstra</surname> <given-names>J. A.</given-names></name></person-group> (<year>2023</year>). <article-title>Eastwood-tidy: C linting for automated code style assessment in programming courses</article-title>. <conf-name>Proceedings of the 54th ACM Technical Symposium on Computer Science Education</conf-name>, <volume>1</volume>, <fpage>799</fpage>&#x2013;<lpage>805</lpage>.</citation></ref>
<ref id="ref7"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ibanez</surname> <given-names>M. B.</given-names></name> <name><surname>Di-Serio</surname> <given-names>A.</given-names></name> <name><surname>Delgado-Kloos</surname> <given-names>C.</given-names></name></person-group> (<year>2014</year>). <article-title>Gamification for engaging computer science students in learning activities: a case study</article-title>. <source>IEEE Trans. Learn. Technol.</source> <volume>7</volume>, <fpage>291</fpage>&#x2013;<lpage>301</lpage>. doi: <pub-id pub-id-type="doi">10.1109/TLT.2014.2329293</pub-id></citation></ref>
<ref id="ref8"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Keppens</surname> <given-names>J.</given-names></name> <name><surname>Hay</surname> <given-names>D.</given-names></name></person-group> (<year>2008</year>). <article-title>Concept map assessment for teaching computer program ming</article-title>. <source>Comput. Sci. Educ.</source> <volume>18</volume>, <fpage>31</fpage>&#x2013;<lpage>42</lpage>. doi: <pub-id pub-id-type="doi">10.1080/08993400701864880</pub-id></citation></ref>
<ref id="ref9"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kia</surname> <given-names>A. D.</given-names></name></person-group> (<year>2023</year>). <article-title>The use of heuristic reasoning in Christian education</article-title>. <source>AI-Ishlah: Jurnal Pendidikan</source> <volume>15</volume>, <fpage>1571</fpage>&#x2013;<lpage>1580</lpage>. doi: <pub-id pub-id-type="doi">10.35445/alishlah.v15i2.3888</pub-id></citation></ref>
<ref id="ref10"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Liu</surname> <given-names>S.</given-names></name> <name><surname>Chen</surname> <given-names>Z.</given-names></name> <name><surname>Tang</surname> <given-names>J.</given-names></name></person-group> (<year>2013</year>). <article-title>The improved methods of teaching practice based on C language programming</article-title>. <conf-name>2013 Conference on Education Technology and Management Science (ICETMS 2013)</conf-name>, <fpage>807</fpage>&#x2013;<lpage>810</lpage>.</citation></ref>
<ref id="ref11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nokhatbayeva</surname> <given-names>K.</given-names></name></person-group> (<year>2020</year>). <article-title>The effects of heuristic teaching methods in mathematics</article-title>. <source>Proc. Int. Young Scholars Workshop</source> <volume>9</volume>, <fpage>142</fpage>&#x2013;<lpage>156</lpage>. doi: <pub-id pub-id-type="doi">10.47344/iysw.v9i0.158</pub-id></citation></ref>
<ref id="ref12"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Pisarenko</surname> <given-names>V.</given-names></name> <name><surname>Zatona</surname> <given-names>D.</given-names></name></person-group> (<year>2024</year>). <article-title>Using heuristic methods in primary school</article-title>. In <conf-name>EDULEARN24 Proceedings: 16th International Conference on Education and New Learning Technologies</conf-name>, <fpage>9486</fpage>&#x2013;<lpage>9495</lpage>.</citation></ref>
<ref id="ref13"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Santos</surname> <given-names>S. C.</given-names></name> <name><surname>Tedesco</surname> <given-names>P. A.</given-names></name> <name><surname>Borba</surname> <given-names>M.</given-names></name> <name><surname>Brito</surname> <given-names>M.</given-names></name></person-group> (<year>2020</year>). <article-title>Innovative approaches in teaching programming: a systematic literature review</article-title>. In <conf-name>Proceedings of the 12th International Conference on Computer Supported Education</conf-name>, <volume>1</volume>, <fpage>205</fpage>&#x2013;<lpage>214</lpage>.</citation></ref>
<ref id="ref14"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Talingdan</surname> <given-names>J. A.</given-names></name> <name><surname>Llanda</surname> <given-names>C. R.</given-names></name></person-group> (<year>2019</year>). <article-title>Assessment of the effectiveness of learning theories using gamified android app in teaching C programming</article-title>. <source>IOP Conf. Ser. Mater. Sci. Eng.</source> <volume>482</volume>:<fpage>012030</fpage>. doi: <pub-id pub-id-type="doi">10.1088/1757-899X/482/1/012030</pub-id></citation></ref>
<ref id="ref15"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Troussas</surname> <given-names>C.</given-names></name> <name><surname>Krouska</surname> <given-names>A.</given-names></name> <name><surname>Sgouropoulou</surname> <given-names>C.</given-names></name></person-group> (<year>2020</year>). <article-title>A novel teaching strategy through adaptive learning activities for computer programming</article-title>. <source>IEEE Trans. Educ.</source> <volume>64</volume>, <fpage>103</fpage>&#x2013;<lpage>109</lpage>. doi: <pub-id pub-id-type="doi">10.1109/TE.2020.3012744</pub-id></citation></ref>
<ref id="ref16"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wakhata</surname> <given-names>R.</given-names></name> <name><surname>Mutarutinya</surname> <given-names>V.</given-names></name> <name><surname>Balimuttajjo</surname> <given-names>S.</given-names></name></person-group> (<year>2023</year>). <article-title>Relationship between active learning heuristic problem-solving approach and students&#x2019; attitude towards mathematics</article-title>. <source>Eurasia J. Math. Sci. Technol. Educ.</source> <volume>19</volume>:<fpage>em2231</fpage>. doi: <pub-id pub-id-type="doi">10.29333/ejmste/12963</pub-id></citation></ref>
<ref id="ref17"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>X. M.</given-names></name> <name><surname>Hwang</surname> <given-names>G. J.</given-names></name> <name><surname>Liang</surname> <given-names>Z. Y.</given-names></name> <name><surname>Wang</surname> <given-names>H. Y.</given-names></name></person-group> (<year>2017</year>). <article-title>Enhancing students&#x2019; computer programming performances, critical thinking awareness and attitudes towards programming: an online peer-assessment attempt</article-title>. <source>J. Educ. Technol. Soc.</source> <volume>20</volume>, <fpage>58</fpage>&#x2013;<lpage>68</lpage>.</citation></ref>
<ref id="ref18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>B.</given-names></name> <name><surname>Yan</surname> <given-names>S.</given-names></name> <name><surname>Jiang</surname> <given-names>X.</given-names></name> <name><surname>Feng</surname> <given-names>S.</given-names></name></person-group> (<year>2020</year>). <article-title>SCFH: a student analysis model to identify students&#x2019; programming levels in online judge systems</article-title>. <source>Symmetry</source> <volume>12</volume>:<fpage>601</fpage>. doi: <pub-id pub-id-type="doi">10.3390/sym12040601</pub-id></citation></ref>
<ref id="ref19"><citation citation-type="other"><person-group person-group-type="author"><name><surname>Xue</surname> <given-names>B.</given-names></name></person-group> (<year>2022</year>) <article-title>The use of picture books and heuristic teaching method for Chinese writing skill of grade 3 Chinese students in Sichuan Province, China</article-title>, <comment>(doctoral dissertation, Rangsit University)</comment>.</citation></ref>
<ref id="ref20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yu</surname> <given-names>F.</given-names></name> <name><surname>Liu</surname> <given-names>Y.</given-names></name> <name><surname>Xiao</surname> <given-names>F.</given-names></name></person-group> (<year>2023</year>). <article-title>Research on construction and practice of precision teaching classroom for university programming courses</article-title>. <source>IEEE Access</source> <volume>11</volume>, <fpage>9560</fpage>&#x2013;<lpage>9576</lpage>. doi: <pub-id pub-id-type="doi">10.1109/ACCESS.2023.3240105</pub-id></citation></ref>
</ref-list>
</back>
</article>