<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Bad Smells in Scratch Projects: A Preliminary Analysis</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Ángela</forename><surname>Vargas-Alba</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Universidad Rey Juan Carlos</orgName>
								<address>
									<settlement>Madrid</settlement>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Giovanni</forename><forename type="middle">Maria</forename><surname>Troiano</surname></persName>
							<email>g.troiano@northeastern.edu</email>
							<affiliation key="aff1">
								<orgName type="institution">Northeastern University</orgName>
								<address>
									<settlement>Boston</settlement>
									<region>MA</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Quinyu</forename><surname>Chen</surname></persName>
							<email>q.chen@northeastern.edu</email>
							<affiliation key="aff1">
								<orgName type="institution">Northeastern University</orgName>
								<address>
									<settlement>Boston</settlement>
									<region>MA</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Casper</forename><surname>Harteveld</surname></persName>
							<email>c.harteveld@northeastern.edu</email>
							<affiliation key="aff1">
								<orgName type="institution">Northeastern University</orgName>
								<address>
									<settlement>Boston</settlement>
									<region>MA</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Gregorio</forename><surname>Robles</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Universidad Rey Juan Carlos</orgName>
								<address>
									<settlement>Madrid</settlement>
									<country key="ES">Spain</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Bad Smells in Scratch Projects: A Preliminary Analysis</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">FC9773589A486ABCAE5F472332FE6F04</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T04:10+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Computational Thinking (CT) is an area of great relevance today. Although its skills may be developed in various ways, one of the most common tools to learn it, train it and develop it, is through programming. From software engineering, we know that problems solved through programming may have not been solved in the most appropriate way. These symptoms are known as "bad smells". This article aims to analyze the presence of several bad smells in Scratch projects and how they relate to the development of CT skills. Therefore, we make use of a dataset of several hundreds of Scratch projects with the aim of creating a game on climate change. Our results show that bad smells can be found in all types of Scratch projects, independently of the development of CT skills they require. We discuss why the learning community should address bad smells appropriately, as they may hinder the development of abstraction, reuse and other relevant skills.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Bad (code) smells are symptoms that the problem to be solved is not developed in the most appropriate way. In other words, the program may run and may even solve the problem, but it contains elements that make it difficult to understand, to modify and to reuse <ref type="bibr" target="#b8">[9]</ref>.</p><p>Martin defines code smells as follows <ref type="bibr" target="#b2">[3]</ref>: "Code smells are usually not bugs; they are not technically incorrect and do not prevent the program from functioning. Instead, they indicate weaknesses in design that may slow down development or increase the risk of bugs or failures in the future." Despite the negative effect they produce, code smells have been little investigated and analyzed in Computational Thinking (CT) research. As Hermans and Aivaloglou have found in an experiment with Scratch learners <ref type="bibr" target="#b0">[1]</ref>, we argue that bad smells hinder the proper development of CT skills in learners. Their identification should be a first step towards guiding learners towards good practices that offer them the possibility to develop themselves to their full potential.</p><p>For this reason, the main motivation of this research is to analyze to what extent bad smells are present in Scratch projects, a block-based language that is widely used around the globe to develop CT skills. Our research is similar to a previous one done on LEGO MINDSTORMS EV3 and Microsoft's Kodu <ref type="bibr" target="#b1">[2]</ref>, expanding it with information on the complexity of the projects. Therefore, we use Dr. Scratch, a tool that evaluates the richness of elements used in the programs, for evaluating the Scratch projects. Thanks to Dr. Scratch it is possible to detect different types of bad smells that are present in the code.</p><p>The remainder of this paper is structured as follows:</p><p>In Section 2, we introduce and motivate the research goal and research questions that we address in this paper. A more detailed description about the definition of bad smells is summarized in Section 3. Section 4 and Section 5 describe the data set used in the study, as well as the functionality and design of Dr. Scratch in more detail. Section 6 shows the results obtained after the analysis and in Section 7 a discussion is proposed based on it. Limitations and problems found are described in Section 7.1. Finally, Section 8 contains the main conclusions and future work that we envision.</p><p>The main objective of this paper is to analyze the presence of bad smells in a large set of Scratch projects.</p><p>For this, the research questions that we want to address are as follows:</p><p>RQ1. To what extent are bad habits present in Scratch projects?</p><p>In particular, we answer this question by offering the percentage of projects that have at least one type of bad smell. This question allows to see how frequent projects show a bad smell, hinting to the relevance of the topic. We expect a significant number of projects to contain bad smells.</p><p>RQ2. Does the development of CT skills relate to the presence of bad smells?</p><p>We would like to find out if the presence of bad smells correlates with the complexity of the projects. Our hypothesis is that projects that have higher degrees of CT development will have less bad smells, as these may hinder the development of CT skills.</p><p>RQ3. Do projects with more blocks have a higher number of bad smells?</p><p>More complex projects usually have more blocks. Thus having a single bad smell in a small, simple project may have less impact than in a project with hundreds of blocks. In the former case, the impact could be big, while in the latter it could be seen as an exception, with little impact.</p><p>To answer this question, for projects of the same level of CT development we calculate the ratio of the number of bad smells detected to the total number of blocks. We expect that this ratio decreases with an increase in the development of CT skills required to create the Scratch projects.</p><p>RQ4. Can we find a relation among specific bad smells?</p><p>As by now, we have considered all type of bad smells together. In this question, we dig into each of them separately. It may be possible that some bad smells appear more frequently in projects of lower complexity, while others appear in more complex projects.</p><p>RQ5.</p><p>To which extent can bad smells be identified in each of the CT development phases?</p><p>Related to the previous question, we analyze how the different bad smell types appear in projects in the different stages of CT development. Therefore, we consider projects with a low complexity (basic), medium complexity (developing) and major complexity (proficiency) and compute how often they contain a specific type of bad smell.</p><p>We expect that several types of bad smells appear in the early phases (basic), while others are more promi-nent in more complex projects (proficiency). We assume therefore that learners that achieve higher levels of complexity have overcome certain bad smells due to having developed certain CT skills, while other bad smells appear in those more complex projects.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Bad smells in Scratch</head><p>Scratch is a visual programming language formed by different blocks, designed for children and beginner programmers, which contains different bad smells related to the use of these blocks <ref type="bibr" target="#b5">[6]</ref>.</p><p>In our research, we have identified four different types of bad smells that can be present in Scratch projects: copy and pasted code (duplicate scripts) <ref type="bibr" target="#b6">[7]</ref>, the use of default names for sprites (default names), code that is never being executed (dead code), and variables that are not correctly initialized (attribute initialization). Their characteristics and impact are summarized in Table <ref type="table" target="#tab_0">1</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Research Context</head><p>In order to analyze the presence of bad smells, as well as their relationship with the level that users have in CT development, a large set of projects is necessary. The data set used in this article is the same which was used for another, previous research <ref type="bibr" target="#b7">[8]</ref>. A group of 438 students designed games for STEM using Scratch 2.0. During this process, we obtained snapshots of the process, in different periods of time, in order to show a temporary evolution <ref type="foot" target="#foot_0">1</ref> . The total number of projects without taking into account the replicas over time, is 711. As a result, the complete data set is comprised of 62,074 projects formed by the snapshots. With the total data set, we wanted to analyze the same 711 projects in different points of time.</p><p>All these snapshots were analyzed with Dr. Scratch, of which 2,158 were erroneous in the analysis for different reasons: the project was saved incorrectly, the code contained special characters, etc. The final set of projects analyzed was 59,916 (further details can be found in <ref type="bibr" target="#b7">[8]</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Methodology</head><p>We have taken all snapshots of the Scratch projects and have analyzed them with Dr. Scratch. Dr. Scratch is a web-based tool that analyzes different categories related to computational thinking based on the blocks of the Scratch projects <ref type="bibr" target="#b3">[4]</ref> (a screenshot of their main web page can be seen in Figure <ref type="figure" target="#fig_0">1</ref>). It analyzes the code and, depending of the diversity of blocks used, the application gives a score to the project.  The outcome is a numeric punctuation based on seven categories of computational thinking: parallelism, logical thinking, flow control, user interactivity, data representation, abstraction and synchronization. For each of these abilities a project can obtain a punctuation from 0 to 3 points, according to the different blocks used in the Scratch project. In this way, the final punctuation can be from 0 to 21 total points.</p><p>Based on that, there are three different profiles of leaner: between 0 and 7 points, Basic, between 8 and 15, Developing and between 16 and 21, Proficiency.</p><p>Once the project is analyzed, the application will show different dashboards with these results, as it is possible to see in the Figure <ref type="figure" target="#fig_1">2</ref>.</p><p>In addition to the former, Dr. Scratch identifies the four types of bad smells that we study in this work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Results</head><p>In this Section we describe the results obtained from addressing our research questions using the previously </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.1">To what extent are bad habits present?</head><p>As shown in Table <ref type="table" target="#tab_1">2</ref>, bad smells can be found in almost all projects in our data set -over 97% of the projects have at least one bad smell. We expected a high share of projects having bad smells, but this result is a surprise for us, as the presence of bad smells is not only more frequent than expected, but almost general.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.2">Does the development of CT skills relate</head><p>to a minor presence of bad smells?</p><p>We have analyzed in more detail those projects that have and do not bad smells. In particular, we want to see how the complexity of the projects is related to having a bad smell. We use the mastery required to create a project, as measured by Dr. Scratch, as a proxy for the complexity of the project.</p><p>In Figure <ref type="figure" target="#fig_2">3</ref> we can observe the distribution of each set of projects. We can observe that more than 50% of those projects with not bad smells have a total mastery of 0. In other words, these are skeleton projects without any content. The amount of projects with content and without any bad smell is therefore even lower than calculated in the previous research question. In addition, we see that projects with no bad smells are in the lower part of the complexity ladder. In summary, bad smells in Scratch can be found in almost all projects. Only a small set of projects with low complexity do not have them.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.3">Do projects with more blocks have a higher number of bad smells?</head><p>One could argue that projects with more complexity (those with higher values of CT score in Dr. Scratch) usually have more blocks, and that the impact of a code smell there is lower than in less complex projects.</p><p>In other words, even if more complex projects have bad smells, their presence is mitigated by the fact that these are large projects. This would imply that achieving high values of CT development means to have less bad smells. Figure <ref type="figure">4</ref> visually shows the number of blocks for all projects for a given CT score (blue line) and the number of bad smells in those projects. Both curves have been normalized to their maximum values. We can observe how the two curves run almost in parallel (up to 8 points they share the same ratio, and then they share a ratio of around 0.5 up to 21 points, where the ratio is over 1).</p><p>Figure <ref type="figure">4</ref>: Relation between the total number of bad smells and the total number of blocks for each mastery level (RQ3).</p><p>Table <ref type="table" target="#tab_2">3</ref> offers more details about this situation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.4">Can we find a relation among specific bad smells?</head><p>From Figure <ref type="figure" target="#fig_3">5</ref> (again, this graph is normalized), we can observe that the four different types of bad smells that we have studied have a similar distribution below the proficiency level. The presence of bad smells has a similar behavior for projects up to 17 points of mastery. Then, when the mastery is above 17 points, the behavior of each of them is different: While duplicated scripts and bad attribute initialization continue to slightly grow, the number of dead code blocks grows more abrupt way. However, and the number of default names decreases considerably. This last trend may be because in projects with a high number of blocks and objects it is more difficult to program with the default names (Sprite 1, Sprite 2, etc) instead of personalizing them.</p><p>6.5 To which extent can bad smells be identified in each of the CT development phases?</p><p>As already seen wit RQ3, the number of bad smells is higher when the total mastery increases. In Figure <ref type="figure" target="#fig_4">6</ref>, we have represented the percentage of projects that have at least a specific type of bad smell for each level of CT proficiency. The percentage of projects from users with the basic level that have bad smells is much smaller than the percentage of projects that require a proficiency level. This result indicates that all bad smells have an incremental evolution with the increase of CT efficiency. So, it seems that bad smells appear in early phases and instead of disappearing with the  development of more advanced CT skills, they become more prominent.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Discussion</head><p>We have observed that bad smells are very common in Scratch projects. The results indicate as well that bad smells do not limit the development of a project, because it is possible to create projects at the proficiency level even with a large amount of bad smells. We argue that researchers, educators and learners should devote more effort in avoiding the presence of bad smells in learning projects. The very nature of bad smells makes them difficult to identify. They are not errors and a program could run perfectly having many of them. However, their effects are very well known in Software Engineering research. These effects are in the long term, when maintainability of a software system is considered. In such a situation, the software has to be understood and changed, and in that situation is where these bad smells become more prominent. The large presence of bad smells indicates that understanding and changing code is not among the priorities of the projects under study, although "good code" has always been considered as that one that is easy to understand and to change. That is why we think that with the current presence of bad smells learners do not achieve their full potential of CT development skills. In our opinion, further research and tools should be envisioned and created to address this issue.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7.1">Limitations</head><p>As any research, our work comes with a number of limitations that can be seen as threats to its validity. The first one is related to our methodology, and in particular to the limited set of bad smells that we can identify. We are sure that many other types of bad smells could be thought of in Scratch. On the other hand, we use as complexity metrics the CT scores provided by Dr. Scratch. While there have been some research that has studied how Dr. Scratch correlates with other complexity metrics <ref type="bibr" target="#b4">[5]</ref>, this is always a correlation and not causation.</p><p>We have studied projects from a specific environment, which may not be representative for all Scratch projects, so the generalization of results is a threat to validity. However, it should be noted that this is a case study, with the aim to raise attention on this matter. We should analyze a wider data set which includes different sectors of programming with Scratch, such as stories, music, animations, among others. We do not know if the behavior of bad smells could be different in other areas of programming.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="8">Conclusions</head><p>Bad smells are common in Scratch projects, from basic to proficient. As the complexity increases, bad smells do not disappear, so learners can create projects that demand a high development of CT skills having bad smells in them.</p><p>We ask for further research on this topic.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Main page of the web tool Dr. Scratch</figDesc><graphic coords="3,69.97,279.62,223.66,141.73" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Example of the analysis of a Scratch project with Dr. Scratch</figDesc><graphic coords="3,316.80,280.62,246.46,158.74" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Distribution for projects without bad smells and with bad smells (RQ2).</figDesc><graphic coords="4,64.80,274.90,245.61,121.89" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: Evolution of the different types of bad smells with CT mastery (RQ4).</figDesc><graphic coords="5,75.90,382.43,211.81,150.24" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: Presence of bad smells for each proficiency level (RQ5).</figDesc><graphic coords="5,317.13,382.43,233.35,150.24" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 :</head><label>1</label><figDesc>Types of Bad Smells. Variables are not well initialized It hinders the start of some objects, because their position, size, costume, etc are not correctly initialized</figDesc><table><row><cell>Bad Smell Type</cell><cell>Definition</cell><cell>Impact on Learning</cell></row><row><cell>Duplicate scripts</cell><cell>Code is copy and pasted, some-</cell><cell>It hinders the use of user-defined</cell></row><row><cell></cell><cell>times with minor changes</cell><cell>blocks and as such can be seen a</cell></row><row><cell></cell><cell></cell><cell>limitation to the development of</cell></row><row><cell></cell><cell></cell><cell>the abstraction skill</cell></row><row><cell>Default names</cell><cell>Objects are not given a meaning-</cell><cell>It hinders interaction among ob-</cell></row><row><cell></cell><cell>ful name, but keep the default</cell><cell>jects, as using them in other ob-</cell></row><row><cell></cell><cell>SpriteN name</cell><cell>jects becomes more difficult</cell></row><row><cell>Dead code</cell><cell>Code that is never being exe-</cell><cell>It may indicate missing function-</cell></row><row><cell></cell><cell>cuted (usually because they do</cell><cell>ality</cell></row><row><cell></cell><cell>not have a starting condition)</cell><cell></cell></row><row><cell>Attribute initialization</cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 2 :</head><label>2</label><figDesc>General presence of Bad Smells (RQ1)</figDesc><table><row><cell cols="2">Projects with Projects without</cell></row><row><cell>bad smells</cell><cell>bad smells</cell></row><row><cell>58,162</cell><cell>1,754</cell></row><row><cell>97,07%</cell><cell>2,93%</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 3 :</head><label>3</label><figDesc>Detailed information on number of blocks and bad smells for each mastery level (RQ3).</figDesc><table><row><cell>Total</cell><cell>Total</cell><cell>Total</cell><cell cols="2">Mean Median</cell><cell>Total</cell><cell>Mean</cell><cell cols="2">Median Total Blocks</cell></row><row><cell cols="2">Mastery Projects</cell><cell>Blocks</cell><cell>Blocks</cell><cell cols="5">Blocks Bad Smells Bad Smells Bad Smells / Bad Smells</cell></row><row><cell>0</cell><cell>1747</cell><cell>198</cell><cell>0.11</cell><cell>0</cell><cell>2087</cell><cell>1.19</cell><cell>1</cell><cell>0.09</cell></row><row><cell>1</cell><cell>279</cell><cell>2096</cell><cell>7.51</cell><cell>1</cell><cell>2200</cell><cell>7.89</cell><cell>1</cell><cell>0.95</cell></row><row><cell>2</cell><cell>171</cell><cell>702</cell><cell>4.11</cell><cell>3</cell><cell>468</cell><cell>2.74</cell><cell>1</cell><cell>1.50</cell></row><row><cell>3</cell><cell>464</cell><cell>3519</cell><cell>7.58</cell><cell>4</cell><cell>2914</cell><cell>6.28</cell><cell>0</cell><cell>1.21</cell></row><row><cell>4</cell><cell>425</cell><cell>2902</cell><cell>6.83</cell><cell>5</cell><cell>1414</cell><cell>3.33</cell><cell>0</cell><cell>2.05</cell></row><row><cell>5</cell><cell>1325</cell><cell>15365</cell><cell>11.60</cell><cell>9</cell><cell>7268</cell><cell>5.49</cell><cell>1</cell><cell>2.11</cell></row><row><cell>6</cell><cell>1417</cell><cell>28878</cell><cell>20.38</cell><cell>16</cell><cell>8298</cell><cell>5.86</cell><cell>2</cell><cell>3.48</cell></row><row><cell>7</cell><cell>1470</cell><cell>51024</cell><cell>34.71</cell><cell>22</cell><cell>10304</cell><cell>7.01</cell><cell>2</cell><cell>4.95</cell></row><row><cell>8</cell><cell>1935</cell><cell>92437</cell><cell>47.77</cell><cell>29</cell><cell>13459</cell><cell>6.96</cell><cell>2</cell><cell>6.87</cell></row><row><cell>9</cell><cell>2349</cell><cell>191908</cell><cell>81.70</cell><cell>55</cell><cell>20221</cell><cell>8.61</cell><cell>3</cell><cell>9.49</cell></row><row><cell>10</cell><cell>3473</cell><cell>334075</cell><cell>96.19</cell><cell>66</cell><cell>38376</cell><cell>11.05</cell><cell>3</cell><cell>8.71</cell></row><row><cell>11</cell><cell>5900</cell><cell>683490</cell><cell>115.85</cell><cell>82</cell><cell>64702</cell><cell>10.97</cell><cell>4</cell><cell>10.56</cell></row><row><cell>12</cell><cell>5786</cell><cell>779130</cell><cell>134.66</cell><cell>103</cell><cell>66401</cell><cell>11.48</cell><cell>4</cell><cell>11.73</cell></row><row><cell>13</cell><cell cols="2">6206 1142705</cell><cell>184.13</cell><cell>142</cell><cell>108307</cell><cell>17.45</cell><cell>7</cell><cell>10.55</cell></row><row><cell>14</cell><cell cols="2">8173 2184999</cell><cell>267.34</cell><cell>201</cell><cell>182128</cell><cell>22.28</cell><cell>10</cell><cell>12.00</cell></row><row><cell>15</cell><cell cols="2">4954 1383152</cell><cell>279.20</cell><cell>193</cell><cell>104416</cell><cell>21.08</cell><cell>7</cell><cell>13.25</cell></row><row><cell>16</cell><cell cols="2">5346 1735651</cell><cell>324.66</cell><cell>255</cell><cell>130280</cell><cell>24.37</cell><cell>10</cell><cell>13.22</cell></row><row><cell>17</cell><cell cols="2">3352 1276143</cell><cell>380.71</cell><cell>291</cell><cell>103394</cell><cell>30.85</cell><cell>16</cell><cell>12.34</cell></row><row><cell>18</cell><cell>1795</cell><cell>631899</cell><cell>352.03</cell><cell>279</cell><cell>50581</cell><cell>28.18</cell><cell>10</cell><cell>12.49</cell></row><row><cell>19</cell><cell>2092</cell><cell>872027</cell><cell>416.84</cell><cell>342</cell><cell>71391</cell><cell>34.13</cell><cell>14</cell><cell>12.21</cell></row><row><cell>20</cell><cell>960</cell><cell>533958</cell><cell>556.21</cell><cell>507</cell><cell>66419</cell><cell>69.19</cell><cell>26</cell><cell>8.04</cell></row><row><cell>21</cell><cell cols="3">296 1639757 5539.72</cell><cell>7183</cell><cell>355809</cell><cell>1202.06</cell><cell>1505</cell><cell>4.61</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">https://drive.google.com/drive/u/0/folders/ 1tDI6nx2f6344xJAKeUeWBeTg0YzxE3bO</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>This work has been co-funded by the Madrid Regional Government, through the project e-Madrid-CM (P2018/TCS-4307). The e-Madrid-CM project is also co-financed by the Structural Funds (FSE and FEDER).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Do code smells hamper novice programming? a controlled experiment on scratch programs</title>
		<author>
			<persName><forename type="first">F</forename><surname>Hermans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Aivaloglou</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 24th International Conference on Program Comprehension (ICPC)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="1" to="10" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Smells in block-based programming languages</title>
		<author>
			<persName><forename type="first">F</forename><surname>Hermans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">T</forename><surname>Stolee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Hoepelman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="68" to="72" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Clean code: a handbook of agile software craftsmanship</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">C</forename><surname>Martin</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>Pearson Education</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Analyze your scratch projects with dr. scratch and assess your computational thinking skills</title>
		<author>
			<persName><forename type="first">J</forename><surname>Moreno-León</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Robles</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Scratch conference</title>
				<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="12" to="15" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Comparing computational thinking development assessment scores with software complexity metrics</title>
		<author>
			<persName><forename type="first">J</forename><surname>Moreno-León</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Robles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Román-González</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE global engineering education conference (EDUCON)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016. 2016</date>
			<biblScope unit="page" from="1040" to="1045" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Scratch: Programming for all</title>
		<author>
			<persName><forename type="first">M</forename><surname>Resnick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Maloney</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Monroy-Hernández</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Rusk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Eastmond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Brennan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Millner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Rosenbaum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">S</forename><surname>Silver</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Silverman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Commun. Acm</title>
		<imprint>
			<biblScope unit="volume">52</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="60" to="67" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Software clones in scratch projects: On the presence of copy-and-paste in computational thinking learning</title>
		<author>
			<persName><forename type="first">G</forename><surname>Robles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Moreno-León</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Aivaloglou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Hermans</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 11th International Workshop on Software Clones (IWSC)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2017">2017. 2017</date>
			<biblScope unit="page" from="1" to="7" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Is my game ok dr. scratch?: Exploring programming and computational thinking development via metrics in studentdesigned serious games for stem</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">M</forename><surname>Troiano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Snodgrass</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Argımak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Robles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Smith</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Cassidy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tucker-Raymond</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Puttick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Harteveld</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 18th ACM International Conference on Interaction Design and Children</title>
				<meeting>the 18th ACM International Conference on Interaction Design and Children</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="208" to="219" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Code bad smells: a review of current knowledge</title>
		<author>
			<persName><forename type="first">M</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Hall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Baddoo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Software Maintenance and Evolution: research and practice</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="179" to="202" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
