<?xml version="1.0" encoding="ISO-8859-1"?><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">
<front>
<journal-meta>
<journal-id>0717-5000</journal-id>
<journal-title><![CDATA[CLEI Electronic Journal]]></journal-title>
<abbrev-journal-title><![CDATA[CLEIej]]></abbrev-journal-title>
<issn>0717-5000</issn>
<publisher>
<publisher-name><![CDATA[Centro Latinoamericano de Estudios en Informática]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0717-50002012000100005</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[An Experience on Applying Software Testing for Teaching Introductory Programming Courses]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Brito]]></surname>
<given-names><![CDATA[Maria A. S.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Rossi]]></surname>
<given-names><![CDATA[João L.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[de Souza]]></surname>
<given-names><![CDATA[Simone R. S.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Braga]]></surname>
<given-names><![CDATA[Rosana T. V.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação ]]></institution>
<addr-line><![CDATA[São Carlos SP]]></addr-line>
<country>Brazil</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>04</month>
<year>2012</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>04</month>
<year>2012</year>
</pub-date>
<volume>15</volume>
<numero>1</numero>
<fpage>5</fpage>
<lpage>5</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_arttext&amp;pid=S0717-50002012000100005&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_abstract&amp;pid=S0717-50002012000100005&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.edu.uy/scielo.php?script=sci_pdf&amp;pid=S0717-50002012000100005&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Previous work has demonstrated that the use of software testing concepts for teaching introductory programming courses may be a good practice for the students. Indeed, these courses provide limited opportunities for the teacher regarding dynamic activities that could help students in the learning process. This paper describes an approach in which test sets are reused in the context of teaching introductory programming courses, as an alternative to increase the quality of the programs generated by students. An experimental study was carried out to investigate the impact of reusing test cases during the programming learning. The objective is to evaluate if the use of test cases might improve the quality of programs implemented by the students. Sixty undergraduate students participated in the experiment, implementing programs in the domain of vectors. A set of reference programs was used to generate test cases, based on functional testing, to be reused by the students to test their programs. Considering a range of <img width=32 height=32 src="../../../../../img/revistas/cleiej/v15n1/1a050x.png" alt="1 - 10 " class=math>, the programs&#8217; quality increased from <img width=32 height=32 src="../../../../../img/revistas/cleiej/v15n1/1a051x.png" alt="5.3 " class=math>to <img width=32 height=32 src="../../../../../img/revistas/cleiej/v15n1/1a052x.png" alt="7.4 " class=math>using this approach. The results provide evidences that the reuse of test cases during introductory programming courses may help to increase the quality of the programs generated by students, motivating them to apply software testing during the development of the programs]]></p></abstract>
<abstract abstract-type="short" xml:lang="pt"><p><![CDATA[Resumo: Estudos anteriores mostraram que conceitos de teste de software aplicados ao ensino de disciplinas introdutórias de programação podem contribuir com a aprendizagem dos alunos. Um problema que ocorre com os professores que lecionam essas disciplinas é a limitação na realização de atividades dinâmicas e interativas que possivelmente contribuiriam com a aprendizagem. Este artigo descreve uma abordagem baseada no reúso de casos de teste no contexto de disciplinas introdutórias de programação como alternativa para aumentar a qualidade dos programas gerados pelos alunos. Um estudo experimental foi realizado para investigar o impacto do reúso de casos de teste durante a aprendizagem de conceitos de programação. O objetivo foi avaliar o uso de casos de teste como alternativa à melhoria da qualidade dos programas implementados pelos alunos. Sessenta estudantes de graduação participaram do experimento implementando programas no domínio de vetores. Um conjunto de programas de referência foi usado para geração dos casos de teste com base no teste funcional para ser reusado pelos estudantes. Os programas gerados pelos estudantes foram avaliados considerando notas de 1 a 10 e observou-se que a média das notas aumentou de 5.3 para 7.4 com o uso da abordagem proposta. Os resultados forneceram evidências de que o reúso de casos de teste em cursos introdutórios de programação pode aumentar a qualidade dos programas gerados pelos alunos, motivando-os a aplicarem teste de software durante o desenvolvimento dos programas]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[Experimental study]]></kwd>
<kwd lng="en"><![CDATA[Functional testing]]></kwd>
<kwd lng="en"><![CDATA[Reuse]]></kwd>
<kwd lng="en"><![CDATA[Teaching introductory programming courses]]></kwd>
<kwd lng="pt"><![CDATA[Estudo experimental]]></kwd>
<kwd lng="pt"><![CDATA[Teste funcional]]></kwd>
<kwd lng="pt"><![CDATA[Reúso]]></kwd>
<kwd lng="pt"><![CDATA[Ensino em cursos introdutórios de programação]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <div class="maketitle">    <b><font face="Verdana" size="4">An Experience on Applying Software Testing for Teaching Introductory Programming Courses</font></b>    <div class="author">    <font face="Verdana" size="2"> <span class="cmbx-12">Maria A. S. Brito, Jo&atilde;o L. Rossi, Simone R. S. de Souza,</span>     <br>                             <span class="cmbx-12">Rosana T. V. Braga</span>     <br> <span class="cmr-12">Universidade de S&atilde;o Paulo, Instituto de Ci&ecirc;ncias Matem&aacute;ticas e de Computa&ccedil;&atilde;o</span>     <br>                        <span class="cmr-12">S&atilde;o Carlos (SP), Brazil, 13560-970</span>     <br>                     <span class="cmsy-10x-x-120">{</span><span class="cmti-12"><a href="mailto:masbrit@icmc.usp.br">masbrit</a>,<a href="mailto:rossi@icmc.usp.br">rossi</a>,<a href="mailto:srocio@icmc.usp.br">srocio</a>,<a href="mailto:rtvb@icmc.usp.br">rtvb</a></span><span class="cmsy-10x-x-120">}</span><span class="cmti-12">@icmc.usp.br </span>   </font></div> <font face="Verdana" size="2">     <br>  </font>      <div class="date"></div>     </div>          <div class="abstract">     <div class="center"> <font face="Verdana" size="2">     ]]></body>
<body><![CDATA[<br> </font>     <p>  </p>     <div class="minipage">     <div class="center"> <font face="Verdana" size="2">     <br> </font>     <p> </p>     <p><font face="Verdana" size="2"><span class="cmbx-10">Abstract</span></font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Previous work has demonstrated that the use of software testing concepts for teaching introductory programming courses may be a good practice for the students. Indeed, these courses provide limited opportunities for the teacher regarding dynamic activities that could help students in the learning process. This paper describes an approach in which test sets are reused in the context of teaching introductory programming courses, as an alternative to increase the quality of the programs generated by students. An experimental study was carried out to investigate the impact of reusing test cases during the programming learning. The objective is to evaluate if the use of test cases might improve the quality of programs implemented by the students. Sixty undergraduate students participated in the experiment, implementing programs in the domain of vectors. A set of reference programs was used to generate test cases, based on functional testing, to be reused by the students to test their programs. Considering a range of <img src="/img/revistas/cleiej/v15n1/1a050x.png" alt="1 - 10  " class="math">, the programs&rsquo; quality increased from <img src="/img/revistas/cleiej/v15n1/1a051x.png" alt="5.3  " class="math"> to <img src="/img/revistas/cleiej/v15n1/1a052x.png" alt="7.4  " class="math"> using this approach. The results provide evidences that the reuse of test cases during introductory programming courses may help to increase the quality of the programs generated by students, motivating them to apply software testing during the development of the programs.<br class="newline">      <br> </font> </p>     ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2">Keyworks: Experimental study, Functional testing, Reuse, Teaching introductory programming courses.<br class="newline">      <br> </font> </p>     <p><font face="Verdana" size="2"><span class="cmbx-10">Resumo: </span>Estudos anteriores mostraram que conceitos de teste de software aplicados ao ensino de disciplinas introdut&oacute;rias de programa&ccedil;&atilde;o podem contribuir com a aprendizagem dos alunos. Um problema que ocorre com os professores que lecionam essas disciplinas &eacute; a limita&ccedil;&atilde;o na realiza&ccedil;&atilde;o de atividades din&acirc;micas e interativas que possivelmente contribuiriam com a aprendizagem. Este artigo descreve uma abordagem baseada no re&uacute;so de casos de teste no contexto de disciplinas introdut&oacute;rias de programa&ccedil;&atilde;o como alternativa para aumentar a qualidade dos programas gerados pelos alunos. Um estudo experimental foi realizado para investigar o impacto do re&uacute;so de casos de teste durante a aprendizagem de conceitos de programa&ccedil;&atilde;o. O objetivo foi avaliar o uso de casos de teste como alternativa &agrave; melhoria da qualidade dos programas implementados pelos alunos. Sessenta estudantes de gradua&ccedil;&atilde;o participaram do experimento implementando programas no dom&iacute;nio de vetores. Um conjunto de programas de refer&ecirc;ncia foi usado para gera&ccedil;&atilde;o dos casos de teste com base no teste funcional para ser reusado pelos estudantes. Os programas gerados pelos estudantes foram avaliados considerando notas de 1 a 10 e observou-se que a m&eacute;dia das notas aumentou de 5.3 para 7.4 com o uso da abordagem proposta. Os resultados forneceram evid&ecirc;ncias de que o re&uacute;so de casos de teste em cursos introdut&oacute;rios de programa&ccedil;&atilde;o pode aumentar a qualidade dos programas gerados pelos alunos, motivando-os a aplicarem teste de software durante o desenvolvimento dos programas.<br class="newline">      <br> </font> </p>     <p><font face="Verdana" size="2"><span class="cmbx-10">Palavras-chave: </span>Estudo experimental, Teste funcional, Re&uacute;so, Ensino em cursos introdut&oacute;rios de programa&ccedil;&atilde;o<br class="newline">      <br> </font> </p>     <p><font face="Verdana" size="2">Received: 2011-08-01 Revised: 2011-12-30 Accepted: 2011-12-30 </font> </p> </div> </div>  </div>          <p><font face="Verdana" size="2"><span class="titlemark">1   </span> <a id="x1-10001"></a>Introduction</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">The teaching of introductory programming courses differs from the teaching of other subjects, because in order to teach programming, first it is necessary to teach how to solve problems and build ideas&nbsp;<span class="cite">(<a href="#c1">1</a>)</span><a name="c1."></a>. Often, the students&rsquo; inexperience in programming logic implies that teachers need to find ways to improve their ability to understand the logic behind the mere codification.&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">In traditional teaching methods, students initially receive the rules (programming language structures) so that  problems can be solved. Then the teacher provides the student the program specification and (s)he waits for the student to build a program able to solve the proposed problem. In this case, the student has got just the program specification and, based on it, (s)he should achieve the expected result, which is the code of a correct program. In such approach, the student creates and applies some tests which (s)he judges enough and admits that the program is correct.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">This paper presents a study where we propose an approach for teaching in which the student receives from the teacher not only the problem specification, but also a test set that should be used during the testing. The test set is suitable for a reference program which is equivalent to the one that will be created by the student. Two programs <img src="/img/revistas/cleiej/v15n1/1a053x.png" alt="P1  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a054x.png" alt="P2  " class="math"> are defined as equivalent if the same output <img src="/img/revistas/cleiej/v15n1/1a055x.png" alt="o1  " class="math"> resulting from processing the input <img src="/img/revistas/cleiej/v15n1/1a056x.png" alt="i1  " class="math"> to <img src="/img/revistas/cleiej/v15n1/1a057x.png" alt="P1  " class="math"> is obtained by the program <img src="/img/revistas/cleiej/v15n1/1a058x.png" alt="P2  " class="math"> considering the input <img src="/img/revistas/cleiej/v15n1/1a059x.png" alt="i1  " class="math">&nbsp;<span class="cite">[<a href="#c2">2</a>)<a name="c2."></a></span>. However, the functionality in equivalent programs can be implemented in different ways. Based on this idea, when the program is built, the student can reuse the test cases and evaluate whether the program under construction is free of defects. Thus, the method contributes to improving the quality of the programs generated by students. Quality here refers to the conformancy of the program implementation with its specification, i.e., the program implementation is totally compliant with its specification. Another aspect of this approach is that, as the student learns to program, at the same time (s)he understands the importance of software testing activity. This is an activity with a small portion allocated in the Computer Science curriculum in comparison to other activities of the software development process&nbsp;<span class="cite">[<a href="#c3">3</a>)</span><a name="c3."></a>.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The experimental study performed in this work involved two programming themes: vectors and matrix manipulation and was conducted with <img src="/img/revistas/cleiej/v15n1/1a0510x.png" alt="60  " class="math"> undergraduate students of two computer science courses at ICMC/USP (Institute of Mathematics and Computer Science/University of S&atilde;o Paulo). In each classroom, students were randomly divided into two groups, in which a group of students received only the program specification and the other group received the program specification and the test sets. Each group was instructed to use the specification to build a program in conformance to it. The group that has received the test set was instructed to use it to validate their programs and to record the results of this validation. At the end, <img src="/img/revistas/cleiej/v15n1/1a0511x.png" alt="60  " class="math"> programs were implemented by the students. The ANOVA statistical tests were applied to evaluate the experiment hypotheses.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">This paper is structured as follows. In Section 2, we describe related work on the reuse of software testing and experimental studies. In Section 3, we present the important concepts about software testing that are required to understand the present work. In Section 4, we describe details about our experimental study and, in Section 5, the results obtained are discussed. In Section 6, we present the validity threats of our study. In Section 7, we outline a proposal for a data repository to ease the use of testing during programming learning. Finally, in Section 8 we present our conclusions and future work.&nbsp;</font></p>     <p>    </p>     <p><font face="Verdana" size="2"><span class="titlemark">2   </span> <a id="x1-20002"></a>Related Work</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Although there are papers reporting empirical studies about reuse of test cases&nbsp;<span class="cite">[<a href="#c4">4</a>,<a href="#c5">&nbsp;5</a>,&nbsp;<a href="#c6">6</a>)</span><a name="c4."></a><a name="c5."></a><a name="c6."></a>, in the teaching context there are many works about the insertion of software testing as a resource to teach programming.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">In Schulte et al.&nbsp;<span class="cite">[<a href="#c7">7</a>)</span><a name="c7."></a> the authors compare and contrast the way in which different models conceptualize program comprehension from an education point of view. Jones&nbsp;<span class="cite">[<a href="#c8">8</a>,<a href="#c9.">&nbsp;</a><a href="#c9">9</a>,&nbsp;<a href="#c10">10</a>,&nbsp;<a href="#c11">11</a>)</span><a name="c8."></a><a name="c9."></a><a name="c10."></a><a name="c11."></a> is the most outspoken educator on this area who suggests systematically incorporating testing practices across the undergraduate curriculum, thinking that the students can be more prepared for real world testing tasks upon graduation. Stephen&nbsp;<span class="cite">[<a href="#c12">12</a>,&nbsp;<a href="#c13">13</a>)</span> <a name="c12."></a><a name="c13."></a>describes the use of software testing to teach programming introdutory courses with the purpose of encouraging students to write tests as they code (in the spirit of TDD &ndash; Test-Driven Development).&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Few works report empirical studies about reuse of test cases in teaching introductory programming courses. In Souza and Barbosa&nbsp;<span class="cite">(<a href="#c14">14</a>)</span><a name="c14."></a> it is presented an environment for submission and evaluation of practical work performed by students. The students submit their program and their test cases and the environmet analyses them using a reference program and a test case set, defined by instructor. The objective is to evaluate the coverage of the student&acute;s test cases in relation to reference program and the coverage of the instructor&acute;s test cases in relation to student&acute;s program. Thus, the tool allows the reuse of test cases generated by the instructor to verify the correctness of the student&rsquo;s program. Differently of our study, this approach is defined to evaluate the program correctness, mainly related to the coverage of testing criteria. Currently, this environment is configured for Java programs. In&nbsp;<span class="cite">(<a href="#c15">15</a>)</span><a name="c15."></a> is presented a tool, in which the student&rsquo;s programs are tested using test cases generated by the instructor. The tool MARMOSET&nbsp;<span class="cite">(<a href="#c16">16</a>)<a name="c16."></a></span> uses an approach that is similar to our work as it uses test cases generated by the instructor, but it allows students to create their own tests. The  tests generated by the instructor are delivered to the students in three different moments: before they start to code their programs, during the implementation (with limitation in how many tests they can perform) and after they finish the program implementation. The authors believe that if part of the tests are a limited resource, this will encourage students to start tests earlier in their projects. This approach is also defined to evaluate the program correctness and the generation of test cases by students.&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">Campanha et al.&nbsp;<span class="cite">(<a href="#c17">17)</a></span> <a name="c17."></a>describe an experimental study where test case sets are reused to validate alternative versions of a program. In this study, two master students developed reference programs for sorting algorithms, such as bubble sort, selection sort and insertion sort, and subsequently, they generated, for each program, test cases sets adequated to the Mutation Testing. In an introductory programming course, undergraduate students implemented different programs to solve the data sorting problem. These programs were tested using the test case sets generated from the reference programs, evaluating if this sets are adequated to test equivalents programs. The authors concluded that the reuse of test sets adequated to Mutation Testing to validate equivalent programs can be truly effective, reducing the testing activity costs. Our study, presented in this paper, is inspired on the Campanha et al.&nbsp;<span class="cite">(<a href="#c17">17)</a></span> study.&nbsp;</font></p>     <p>    </p>     <p><font face="Verdana" size="2"><span class="titlemark">3   </span> <a id="x1-30003"></a>Software Testing</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">The software development process involves the use of methods, techniques and tools, but this does not prevent the occurrence of errors in the product in development. In order to reduce these errors, there are VV&amp;T - Software Verification, Validation and Testing activities, which are employed during the software development cycle. Verification is the process of identifying whether the software construction is being done in the right way. Validation involves evaluating whether the software developed meets the requirements proposed by the client. The testing activity involves discovering the presence of defects, if they exist&nbsp;<span class="cite">(<a href="#c18">18</a>)<a name="c18."></a></span>.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The testing activity should be present throughout the development cycle, and it has the following testing phases: 1) unit testing, in which the smallest units of the software are tested, such as procedures, functions or methods and classes; 2) integration testing, where the integration between modules, components or other forms of units of the software is tested, and; 3) system testing, in which the system is tested as a whole. The tests applied at this phase include stress testing, security testing, load testing, among others. In addition to these three phases, there is also the regression testing performed when the program is modified and it is necessary to guarantee that previous tests are still applied, and also to test new requirements introduced by modification&nbsp;<span class="cite">(<a href="#c19">19</a>)</span><a name="c19."></a>.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">A test case is a pair formed by one or more input values and an expected output for this entry. A test criterion defines which properties or requirements need to be tested to evaluate the test cases quality&nbsp;<span class="cite">(<a href="#c20">20</a>)</span><a name="c20."></a>. The selection of test cases should be performed based on testing criteria, which are divided in different testing techniques: structural, functional and error-based testing&nbsp;<span class="cite">(<a href="#c19">19)</a></span>. In the functional technique, the software is considered a black box and the test cases are built based on the software specification. For the structural testing, the internal structures of software are tested, so the test cases are built based on the software implementation. In the error-based testing technique, the most common faults that can be made during the development process are used for selecting the test cases.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The Equivalence Partitioning Functional criterion divides the domain of program entry data in classes, in which the test cases are derived&nbsp;<span class="cite">(<a href="#c21">21</a>,&nbsp;<a href="#c18">18</a>)</span><a name="c21."></a>. In this criterion, the division is carried out into valid and invalid equivalence classes and the objective is to produce test cases that cover each class, reducing the total number of test cases needed. The principle is that, if a test case of a particular equivalence class reveals an error, any other test case in this class should reflect the same error. The Boundary Value Analysis Functional criterion complements the Equivalence Partitioning through test cases that exercise boundary values, for instance, the biggest value of a variable. Boundary values refer to situations that occur within an equivalence class, directly above or below.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The experiment described in this paper uses the functional testing criteria to generate the test cases for the reference programs. As the programs developed by students were equivalent to the reference programs, we believe that these testing criteria are the best choice to generate the test cases for this experiment. The functional test sets are simpler to generate, facilitating the reuse and the use of this approach in introductory programming courses.&nbsp;</font></p>     <p>     </p>     ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="titlemark">4   </span> <a id="x1-40004"></a>Experimental Study Planning</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">The experimental study was defined based on the Wohlin et al.&nbsp;<span class="cite">(<a href="#c22">22</a>)<a name="c22."></a></span> process. Next, we summarize the experiment planning. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     <br> </font>     <p>  <font face="Verdana" size="2">  <span class="cmbx-10">Experiment Definition:</span></font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">To investigate the reuse of test case sets as an mechanism to teach programming, checking whether or not this mechanism allows an increase in the quality of the programs implemented by students in introductory programming courses. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     <br> </font>     ]]></body>
<body><![CDATA[<p> <font face="Verdana" size="2"> <span class="cmbx-10">Context</span>:</font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Evaluation of programs for vectors and matrices manipulation, implemented in <img src="/img/revistas/cleiej/v15n1/1a0512x.png" alt="C  " class="math"> language by undergraduate students of computer courses. The master student who is leading this experiment defined the reference programs and the test case sets to be reused by the subjects. The experiment was performed by two groups of students (subjects) randomly selected from each classroom; two programs for vector and matrices manipulation <img src="/img/revistas/cleiej/v15n1/1a0513x.png" alt="P1  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0514x.png" alt="P2  " class="math"> and functional test case sets <img src="/img/revistas/cleiej/v15n1/1a0515x.png" alt="T1  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0516x.png" alt="T2  " class="math"> adequate to test the reference programs. During a practice class, half the subjects received only the program specification, while the other half additionally received the test case sets <img src="/img/revistas/cleiej/v15n1/1a0517x.png" alt="T1  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0518x.png" alt="T2  " class="math"> to validate their implementation. The test case sets were given only after the students finished the program implementation. The evaluation of the programs developed by the subjects was done by applying a score, ranging from <img src="/img/revistas/cleiej/v15n1/1a0519x.png" alt="0  " class="math"> to <img src="/img/revistas/cleiej/v15n1/1a0520x.png" alt="10  " class="math">, considering the correctness of the program in relation to test case set. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     <br> </font>     <p> <font face="Verdana" size="2"> <span class="cmbx-10">Hypotheses</span>:</font></p> </div>        <ul class="itemize1">       <li class="itemize"><font face="Verdana" size="2"><span class="cmti-10">Null Hypothesis</span> <img src="/img/revistas/cleiej/v15n1/1a0521x.png" alt="H0   " class="math">: Students who received test case sets <img src="/img/revistas/cleiej/v15n1/1a0522x.png" alt="T1  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0523x.png" alt="T2  " class="math"> will produce programs whose      quality is equal to or lower than students who received only the program specifications.      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><span class="cmti-10">Alternative Hypothesis</span> <img src="/img/revistas/cleiej/v15n1/1a0524x.png" alt="H1   " class="math">: Students who received test case sets <img src="/img/revistas/cleiej/v15n1/1a0525x.png" alt="T1  " class="math">  and <img src="/img/revistas/cleiej/v15n1/1a0526x.png" alt="T2  " class="math">  will produce higher      quality programs than students who received only the program specifications.</font></li>     </ul>  <font face="Verdana" size="2">      <br> </font>     <p>   <font face="Verdana" size="2">Although our interest is more focused on the effect of test case sets in the quality of the generated programs, hypotheses considering other factors were also taken into consideration. They are described in Section&nbsp;<a href="#x1-50005">5</a>. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     ]]></body>
<body><![CDATA[<br> </font>     <p> <font face="Verdana" size="2"> <span class="cmbx-10">Independent Variables</span>:</font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Program specifications, reference programs, test cases sets, questionnaires and programs implemented by the students. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     <br> </font>     <p> <font face="Verdana" size="2"> <span class="cmbx-10">Dependent Variables</span>:</font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Score of the programs implemented by the students and answers to the questionnaire. </font>  </p>     <div class="flushleft"> <font face="Verdana" size="2">     ]]></body>
<body><![CDATA[<br> </font>     <p>  <font face="Verdana" size="2">  <span class="cmbx-10">Subjects</span>:</font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Sixty undergraduate students from <span class="cmti-10">Introduction to Computer Science </span>courses of the Institute of Mathematics and Computer Science of University of S&atilde;o Paulo, divided in three groups: classrooms I (<img src="/img/revistas/cleiej/v15n1/1a0527x.png" alt="28  " class="math"> students) and II (<img src="/img/revistas/cleiej/v15n1/1a0528x.png" alt="16  " class="math"> students) formed by students of the course Bachelor of Computer Science and classroom III (<img src="/img/revistas/cleiej/v15n1/1a0529x.png" alt="16  " class="math"> students) formed by students of the course Bachelor in Informatics. Each of these <img src="/img/revistas/cleiej/v15n1/1a0530x.png" alt="60  " class="math"> students developed his/her individual version of the programs to be evaluated. A master student who is leading this experiment generated the test cases sets for a reference program set. </font> </p>     <div class="flushleft"> <font face="Verdana" size="2">     <br> </font>     <p>  <font face="Verdana" size="2">  <span class="cmbx-10">Experiment Description</span>:</font></p> </div>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">The programming topic used in the experiment (vectors and matrices manipulation) was previously taught for the students, in this way, it was considered that the students had the necessary knowledge to develop the required programs. We did not provide training on software testing. During the experiment, subjects from each classrooms were randomly separated into two groups. (in this case, following the alphabetical order).&nbsp;</font></p>     <p>   <font face="Verdana" size="2">All subjects in the classroom completed a questionnaire, providing information about sex, background and previous experience in programming, which was used in the analysis. Then, one group received only the programs specification and the other one received also the test cases sets (these were distributed only after the programs were implemented). Each subject was responsible for implementing each program from specification. The subjects that received also the test case sets, had to use them to test the programs and take notes of the results of the tests (if they fail, then they fixed the program and tested again). The subjects that did not receive the test case sets could test the programs in an ad-hoc way.&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">This activity was carried out during a classroom practice, under teacher supervision. The duration of the classroom is as follows: classroom I - 1 hour, classroom II - 2 hours and classroom III - 2 hours. In this phase of the experiment it was not allowed the communication between the students and the consultation of other materials. Before this activity, the master student implemented the reference programs, based on the specifications available in&nbsp;<span class="cite">(<a href="#c23">23</a>)</span><a name="c23."></a>. Then, she generated test case sets to be reused by the subjects, based on the Equivalence Partitioning and Boundary Value Analysis functional criteria. The experiment material were all available electronically and hence could be accessed easily (<a href="http://www.icmc.usp.br/%7Emasbrit/TestCaseExperiment.rar">http://www.icmc.usp.br/~masbrit/TestCaseExperiment.rar</a>). Table&nbsp;<a href="#x1-40011">1</a> shows the programs selected for the experiment, the programs size (lines of code) and the number of test cases generated for each one. The table also shows which programs are used in each classroom. </font>  </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-40011">Table 1: Programs used in the experimental study    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t1.png"> </a> </font> </p>     <font face="Verdana" size="2">         <br> </font>     <p>   <font face="Verdana" size="2">In the second part of the experiment, the implementations and questionnaires completed by the subjects were analyzed. The master students compiled each program and executed it using the test cases sets generated. Thus, the correctness was evaluated and a score, from <img src="/img/revistas/cleiej/v15n1/1a0532x.png" alt="0  " class="math"> to <img src="/img/revistas/cleiej/v15n1/1a0533x.png" alt="10  " class="math">, was assigned for each program. To evaluate the hypotheses, statistical tests were performed, using analysis of variance (ANOVA) to cases that the sample was normal and Kruskal-Wallis tests when the sample was not normalized. </font>    </p>     <p><font face="Verdana" size="2"><span class="titlemark">5   </span> <a id="x1-50005"></a>Results and Discussion</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Data analysis was conducted considering the programs written by students and the answers of the questionnaires. Table&nbsp;<a href="#x1-50012">2</a> presents the population involved in the experiment, showing for each classroom the number of programs and the LOC, in average. In classroom I, the students received both specifications (vector and matrix), however, due to the short time (1 hour) available, only <img src="/img/revistas/cleiej/v15n1/1a0534x.png" alt="42.86%  " class="math"> of the students completed the two programs on time. Due to this, the matrix implementation was not considered in the analysis. In classrooms II and III the two specifications were implemented by the students. Comparing with Table&nbsp;<a href="#x1-40011">1</a>, the implementations of the students have, in average, more lines of code than the reference programs. </font>  </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50012"> Table 2: Information about the Experiment Population    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t2.png"> </a> </font> </p>   <font face="Verdana" size="2">       ]]></body>
<body><![CDATA[<br> </font>     <p>   <font face="Verdana" size="2">The students programs were analysed, observing their correctness and a score from <img src="/img/revistas/cleiej/v15n1/1a0536x.png" alt="0  " class="math"> to <img src="/img/revistas/cleiej/v15n1/1a0537x.png" alt="10  " class="math"> was assigned to each program (Table&nbsp;<a href="#x1-50023">3</a>). As can be seen in the scores of Table&nbsp;<a href="#x1-50023">3</a>, the students groups that reused the test case sets (TC) have obtained better scores than the students that did not reuse the test case sets. </font>  </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50023">Table 3: Correction of the programs    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t3.png"> </a> </font> </p>   <font face="Verdana" size="2">       <br> </font>     <p>   <font face="Verdana" size="2">The students reported some defects revealed by the test case sets. In some cases, the proposed problem was simplified and, hence, the solution did not match with the program specification. As an example, considers the following specification: <span class="cmti-10">the program must read a set of</span> <img src="/img/revistas/cleiej/v15n1/1a0539x.png" alt="n  " class="math"> <span class="cmti-10">numbers and insert these numbers in a set</span> <img src="/img/revistas/cleiej/v15n1/1a0540x.png" alt="X  " class="math"><span class="cmti-10">. Then, the program must print: 1) all the even numbers of</span> <img src="/img/revistas/cleiej/v15n1/1a0541x.png" alt="X  " class="math"> <span class="cmti-10">and their sum; and 2) all the</span> <span class="cmti-10">prime numbers of</span> <img src="/img/revistas/cleiej/v15n1/1a0542x.png" alt="X  " class="math"> <span class="cmti-10">and their sum</span>. In some programs implemented by the students, the test to check if the number is even or prime is done when the number is read, without storing them in a set.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Table&nbsp;<a href="#x1-50034">4</a> presents the main defects found in the programs generated by the students. Most of them are related to defects in programming logic and in the design of the solutions. </font>   </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50034">Table 4: Mistakes made by students    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t4.png"> </a> </font> </p>     <font face="Verdana" size="2">         <br> </font>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">Table&nbsp;<a href="#x1-50045">5</a> shows the data extracted from the questionnaires filled by students, which were also considered in the analysis of the results. For each classroom and group (not using TC and using TC) it is presented the quantity of males and females, the number of students from public and private school, and, finally, the number of students with previous experience in computer programming and students without previous experience. In the following, these results are statistically analyzed and discussed. </font>   </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50045">Table 5: Data extracted from questionnaires    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t5.png"> </a> </font> </p>   <font face="Verdana" size="2">       <br> </font>     <p>   <font face="Verdana" size="2">During the data analysis, the influence of some factors in the programs quality was analysed. Examples of factors analysed are classroom and previous programming experience. We have conducted two analysis of variance, through two-factor models for unbalanced data. At first, it was studied the influence of the group and classroom factors. Then, it was studied the influence of scores and previous experience. In both cases, it was also checked if there was a significant relationship between these factors.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The models for the variance analysis are described in the following form:     <br>     <img src="/img/revistas/cleiej/v15n1/1a0545x.png" class="math-display"> (<a href="#c1">1</a>)     <br>   <img src="/img/revistas/cleiej/v15n1/1a0546x.png" class="math-display">     <br>  where, </font>      </p> <ul class="itemize1">       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0547x.png" class="math"> is the index related to the group, where <img src="/img/revistas/cleiej/v15n1/1a0548x.png" class="math"> indicates non-reuse of TC and <img src="/img/revistas/cleiej/v15n1/1a0549x.png" class="math"> indicates reuse of TC;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0550x.png" class="math"> is the index related to second specific factor of each analysis; in the first analysis, <img src="/img/revistas/cleiej/v15n1/1a0551x.png" class="math"> is the classroom      <img src="/img/revistas/cleiej/v15n1/1a0552x.png" class="math">, <img src="/img/revistas/cleiej/v15n1/1a0553x.png" class="math"> or <img src="/img/revistas/cleiej/v15n1/1a0554x.png" class="math">. In the second analysis, <img src="/img/revistas/cleiej/v15n1/1a0555x.png" class="math"> is the previous experience, equal <img src="/img/revistas/cleiej/v15n1/1a0556x.png" class="math"> for students without      previous experience or <img src="/img/revistas/cleiej/v15n1/1a0557x.png" alt="1  " class="math"> for students with previous experience;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0558x.png" alt="nij  " class="math"> is the number of replicas for the score, considering the factors <img src="/img/revistas/cleiej/v15n1/1a0559x.png" alt="i  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0560x.png" alt="j  " class="math">;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0561x.png" alt="k  " class="math"> is the index related to number of replicas, with the value between 1 to <img src="/img/revistas/cleiej/v15n1/1a0562x.png" alt="nij  " class="math">;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0563x.png" alt="Y  ijk  " class="math"> is the value of score variable for <img src="/img/revistas/cleiej/v15n1/1a0564x.png" alt="i  " class="math">, <img src="/img/revistas/cleiej/v15n1/1a0565x.png" alt="j  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0566x.png" alt="k  " class="math"> index;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0567x.png" alt="&mu;  " class="math"> is the mean value of score;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0568x.png" alt="&alpha;  i  " class="math"> is the effect of factor group on the mean; </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0569x.png" alt="&beta;j  " class="math"> is the effect of the second factor of the analysis (class or experience) on the mean;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0570x.png" alt="&gamma;ij  " class="math"> is the effect of interaction between analysis factors;      </font>      </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0571x.png" alt="&epsilon;ijk  " class="math"> is the error attributed for the score variable considering the index <img src="/img/revistas/cleiej/v15n1/1a0572x.png" alt="i  " class="math">, <img src="/img/revistas/cleiej/v15n1/1a0573x.png" alt="j  " class="math"> and <img src="/img/revistas/cleiej/v15n1/1a0574x.png" alt="k  " class="math">. These errors      are normal, independent and identically distributed, with mean <img src="/img/revistas/cleiej/v15n1/1a0575x.png" alt="0  " class="math"> and unknown variance <img src="/img/revistas/cleiej/v15n1/1a0576x.png" alt="&sigma;2  " class="math">;      </font>       </li>       <li class="itemize"><font face="Verdana" size="2"><img src="/img/revistas/cleiej/v15n1/1a0577x.png" alt="&mu;ij = &mu;+ &alpha;i + &beta;j + &gamma;ij  " class="math">, is the mean value of <img src="/img/revistas/cleiej/v15n1/1a0578x.png" alt="k  " class="math"> replicas of the score variable, for the fixed index <img src="/img/revistas/cleiej/v15n1/1a0579x.png" alt="i  " class="math">      and <img src="/img/revistas/cleiej/v15n1/1a0580x.png" alt="j  " class="math">;</font></li>     </ul>  <font face="Verdana" size="2">      ]]></body>
<body><![CDATA[<br> </font>     <p>   <font face="Verdana" size="2">It was assumed a confidence level of 95% (therefore rejecting the hypothesis <img src="/img/revistas/cleiej/v15n1/1a0581x.png" alt="H0  " class="math"> for p-values <img src="/img/revistas/cleiej/v15n1/1a0582x.png" alt="&lt; 0,05  " class="math">). In several studies, permutations were performed considering the variables studied to obtain evidence on the results of the study and the degree of suitability of each variable.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Before carrying out the hypothesis test, we have performed some descriptive analysis of the scores obtained by students considering the different levels of each factor. It is possible to observe that the mean score of the students belonging to group <img src="/img/revistas/cleiej/v15n1/1a0583x.png" alt="1  " class="math">, which have reused test case sets, is higher than the mean score of the students in group <img src="/img/revistas/cleiej/v15n1/1a0584x.png" alt="0  " class="math"> (Table&nbsp;<a href="#x1-50066">6</a> and Figure&nbsp;<a href="#x1-50071">1</a>). </font>  </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50066">Table 6: Summary of the statistics considering score per group    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t6.png"> </a> </font> </p>        <p align="center"> <font face="Verdana" size="2"> <a name="x1-50071" href="/img/revistas/cleiej/v15n1/1a05f1.jpg"> Figure 1: Box plot for the score per group </a> </font> </p>   <font face="Verdana" size="2">       <br> </font>     <p>   <font face="Verdana" size="2">The analysis has shown that there is a difference between the mean scores obtained by students from different classrooms, mainly from classroom II to the others, as can be seen in Table&nbsp;<a href="#x1-50087">7</a> and Figure&nbsp;<a href="#x1-50123">3</a>. However, the difference in the means was not meaningful in the variance analysis.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The results obtained through the analysis of variance for the group and classroom factors are shown in Table&nbsp;<a href="#x1-50108">8</a>. It can be observed that the influence of the group factor in the mean score was significant, i.e., it can be stated that the reuse of test cases provided a significant increase in the students scores. The relationship between group and classroom factors was not considered significant. </font>   </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50087">Table 7: Summary of the statistics considering score per classroom     ]]></body>
<body><![CDATA[<br>  <img src="/img/revistas/cleiej/v15n1/1a05t7.png"> </a> </font> </p>         <p align="center"> <font face="Verdana" size="2"> <a name="x1-50092" href="/img/revistas/cleiej/v15n1/1a05f2.jpg"> Figure 2: Box plot for the score per classroom </a> </font> </p>         <p align="center"> <font face="Verdana" size="2"> <a name="x1-50108">Table 8: ANOVA results for the score by source group, classrooms and the relationship between group and classroom     <br>  <img src="/img/revistas/cleiej/v15n1/1a05t8.png"> </a> </font> </p>   <font face="Verdana" size="2">       <br> </font>     <p>   <font face="Verdana" size="2">Based on the descriptive analysis of the scores according to the experience factor (Table&nbsp;<a href="#x1-50119">9</a> and Figure&nbsp;<a href="#x1-50092">2</a>) we have evidence that the mean score may differ for the two levels of the factor. The second analysis of variance showed that the mean score was significantly different (Table&nbsp;<a href="#x1-501310">10</a>). The hypothesis that previous programming experience does not produce an increase in score was rejected, i.e., students with previous experience obtained a highest score compared to those without previous experience. Considering the interaction between the factors, it was possible to conclude that their relationship is not significant. The influence of the group factor was also considered significant to the increase of score in this analysis. </font>  </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-50119">Table 9: Summary of the statistics considering the score per experience    <br>  <img src="/img/revistas/cleiej/v15n1/1a05t9.png"> </a> </font> </p>        <p align="center"> <font face="Verdana" size="2"> <a name="x1-50123" href="/img/revistas/cleiej/v15n1/1a05f3.jpg"> Figure 3: Box plot for the score per experience </a> </font> </p>            <div class="table">  <font face="Verdana" size="2">      ]]></body>
<body><![CDATA[<br> </font>     <p>   <font face="Verdana" size="2">   <a id="x1-501310"></a></font></p> <hr class="float">     <div class="float">      <div class="center"> <font face="Verdana" size="2">     <br> </font>     <p> <font face="Verdana" size="2">     <br>  </font>  </p>     <div class="caption"><font face="Verdana" size="2"><span class="id">Table&nbsp;10: </span><span class="content">ANOVA results for the score by sources group, experience and the relationship between group and experience</span></font></div> <font face="Verdana" size="2">     <br>  </font>      <div class="pic-tabular"> <font face="Verdana" size="2"> <img src="/img/revistas/cleiej/v15n1/1a0589x.png" alt="-------------------------------------------------------------------- ---Source-----D.-F.--Partial S.S.-Mean--Square------F------P--value--     group        1         28,1550         28,1550   9,6025    0,00304   experience     1         11.7956         11.7956   4.0230    0.04972  group x exp.   1          0.0167          0.0167   0.0057    0.94014 ---residual-----56--------164.1952----------2.9321--------------------- ----Total------59--------204.1625---------42.8994---------------------"></font></div> </div>      </div> <hr class="endfloat">    </div>  <font face="Verdana" size="2">      ]]></body>
<body><![CDATA[<br> </font>     <p>   <font face="Verdana" size="2">In addition, an analysis was performed to verify if the use of test cases has significant influence on the scores of the subjects, considering the group without previous experience in programming. This analysis was conducted using the Kruskal-Wallis test, because it was not possible to obtain normality in the data by transformations. It was observed that the reuse of test cases provided a significant increase in scores of the subjects without previous experience (<img src="/img/revistas/cleiej/v15n1/1a0590x.png" alt="p- value = 0.0006  " class="math">). Therefore, the main objective of our approach has been reached, i.e., our approach contributes to leverage the programming knowledge of unexperienced students.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">After finishing the analysis of tests based on groups, it was obtained a <img src="/img/revistas/cleiej/v15n1/1a0591x.png" alt="p - value &lt; 0.05  " class="math"> (Table&nbsp;<a href="#x1-50108">8</a> and Table&nbsp;<a href="#x1-501310">10</a>), allowing us to reject the null hypothesis (formulated at Section&nbsp;<a href="#x1-40004">4</a>) and to conclude about the existence of significant differences between groups. Thus, there is evidence that the reuse of test cases generated based on reference programs can contribute to improve the quality of equivalent programs implemented by students in introductory programming courses. As expected, we have also observed that the previous experience in computer programming can contribute to improve the programs quality. Other tests were performed considering the sex and background variables, but we have not found evidence that these variables can contribute to test the hypothesis for the sample considered. </font>    </p>     <p><font face="Verdana" size="2"><span class="titlemark">6   </span> <a id="x1-60006"></a>Threats to Validity</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Internal validity threats concern external factors that may affect an independent variable. Appropriate analysis - i.e., ANOVA and Kruskal-Wallis - were performed to analyse the effect of these factors. However, it was not possible to say that the students&rsquo; experience, for example, properly discerns the effect of results.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Another important threat is the possibility of fraud, where identical implementations could be delivered by undergraduate students. Precautions were taken during the execution of the experiment so that subjects did not communicate while implementing the programs. In addition, the codes were examined individually and no evidence of identical programs was found.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Another threat is the simplicity of the tested programs, as it can be assumed that any test case sets would be sufficient to achieve a satisfactory level of correctness for the programs. Treatment was not found for this threat, since the level of the students did not allow very complex programs and the time available for implementation was also reduced.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Construct validity threats concern the relationship between theory and observation. In particular, this threat is related to how the students carried out the tests. To avoid any subjective evaluation, in the moment of the experiment the master student was present and answered the subjects&rsquo; doubts during the experiment. The great majority of subjects had no practice in software testing, so it avoided that a subject could favor some technique. In the classroom where the study was applied twice, the subjects and groups were interspersed, i.e. students who used test case sets in first study did not used them in the second study.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">We did not provide treatment to the threat in which people try to look better when being observed, because it would require isolating each student, with only the presence of the instructor, but this is not feasible for this kind of study.&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">The conclusion validity is concerned with issues that affect the ability to draw the correct conclusion about relations between the treatment and the results of an experiment. In this case the quality that is being measured is subjetive and contains human judgement, so the quality was measured by the scores of the subjects&rsquo; programs. The master student who conducted the experiment analysed the programs and assigned them a score. To improve this reliability, she has used a criteria list to give scores to the subjects programs. Attention was paid to not violating assumptions made by statistical tests. In situations that allowed to use of parametric test, ANOVA was used, and in situations that did not allow it, the Kruskal-Wallis test was used. The size of subjects set was selected based on classes where it was possible to carry out the study, this is a threat, but this set must be large and more representative to generalization of the study.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The external validity of the experiment refers to the ability to generalize the results. Since the programs studied were in the specific domain of vectors and matrices manipulation, the results cannot be applied to other areas of programming. The generalization can be achieved if the experiment is replicated in other classrooms for other levels of undergraduate students and other domains of programs.&nbsp;</font></p>     <p>     </p>     <p><font face="Verdana" size="2"><span class="titlemark">7   </span> <a id="x1-70007"></a>Proposed Data Repository</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">Motivated by the results of the experimental study described above, in this section we propose the implementation of a repository to store the reference programs and the associated test case sets, so that they can be easily retrieved to be used during computer programming classes.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Repositories are information systems containing features that allow to import, store, preserve, extract, and export digital objects. The current increased of use of repositories has been possible due to the reduction of physical storage prices, the use of standards such as metadata protocol of the Open Archives Initiative (OAI-PMH), and advances in the development of metadata standards that support the open communication model. The term <span class="cmti-10">learning</span> <span class="cmti-10">object repository </span>comprises a database in which learning objects are stored to facilitate their search and reuse. Learning objects are any digital resources that can be reused to assist with learning and distributed network on demand&nbsp;<span class="cite">(<a href="#c24">24</a>)</span><a name="c24."></a>.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The <span class="cmti-10">DSpace Institutional Digital Repository System </span>is a system of electronic publications management developed in a collaboration between MIT (Massachusetts Institute of Technology) and HP (Hewlett-Packard Co.). The DSpace has BSD Open Source license and is available since November <img src="/img/revistas/cleiej/v15n1/1a0592x.png" alt="2002  " class="math">. It is currently the most used software for building institutional repositories&nbsp;<span class="cite">(<a href="#c25">25</a>)</span><a name="c25."></a>. With this software, the user can manage the technical and scientific information, ensuring a permanent access to this information&nbsp;<span class="cite">(<a href="#c26">26</a>)</span><a name="c26."></a>.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Considering the results of the experimental study described in this paper, we propose a repository that will be implemented with the instantiation of DSpace. The objective is to enable reuse of teaching materials generated, such as: sets of reference programs and its associated test case sets, helping to optimize the teaching process.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">Two phases are necessary to implement the repository: 1) exploratory and descriptive theoretical basis for the use of DSpace; and 2) experimental research consisting on evaluation of the software configured. These two phases can be applied in the steps: installation and configuration of the tool, metadata customization, maintenance of the external digital object, operation of the data provided, study of the license distribution model. In this direction, we are building a repository that can be used to store programs and test case sets, while they are being generated, aiming at reuse and improvement of the materials quality. For this proposal, we require a special feature, which is a free access provided only to teachers previously registered on the system, who can download the material available in the repository.&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p>   <font face="Verdana" size="2">A schema for the proposed repository is shown in Figure&nbsp;<a href="#x1-70014">4</a>. The complete deployment and configuration of DSpace is planned as a future work. The repository is configured to store test case sets and the associated reference programs, considering topics taught in introductory programming disciplines. The repository is organized to enable user interaction, so that it does not act merely as a storage compartment; users can add new learning objects and, for each download done, they should provide feedback about the use of the downloaded object. The teacher can look for materials in the repository using a sort key, as for example the name of the program. The information initially available in the repository are related to the discipline of Introduction to Computer Science, such as: program structures: decision and repetition statements, primitive data type, modularization of programs, procedures, functions and parameter passing; compound data types: vectors, matrices, strings, records, dynamic structures (pointers and files). When the user selects a particular topic, the system will retrieve all the programs registered in the repository that are related to the chosen topic. Selecting a program, the user obtains the following information: program specification, programming language, courses where it can be used, level of difficulty and estimated time for implementing the exercise. Information about the test case sets related to the program selected are also avaliable, such as: testing criteria used, number of test cases, the test cases (input and output data) and coverage obtained. </font>    </p>     <p align="center"> <font face="Verdana" size="2"> <a name="x1-70014" href="/img/revistas/cleiej/v15n1/1a05f4.png"> Figure 4: Schema of the proposed repository. Source: Adapted from&nbsp;<span class="cite">(</span></a><a href="#XFachin2009">27</a>) </font>  </p>           <p><font face="Verdana" size="2"><span class="titlemark">8   </span> <a id="x1-80008"></a>Concluding Remarks</font></p>  <font face="Verdana" size="2">      <br> </font>     <p><font face="Verdana" size="2">This paper presented an experimental study to evaluate the reuse of test case sets to help the teaching of introductory programming courses. The objective is improving the quality of the programs generated by the students. It is not expected that every aspect of the student&rsquo;s program be tested, but that test cases are able to detect typical errors made by new students in computer programming and, thus may contribute to their learning.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">The development of the proposal followed a methodology based on experimentation, according to Wohlin&nbsp;<span class="cite"><a href="#c22">(22</a>)</span>. The conducted experimental study aimed to validate this proposal. The ANOVA test provided evidence that sets of functional test cases reused can help the student in obtaining an improvement in the quality of the programs. It is expected that the experiment has motivated the participating students to use testing activities during the program development and, as a consequence, that they will give a greater importance to this activity. It was also analysed the effect of previous experience factor, which indicated evidence of positive influence of the reuse of test cases by subjects with no previous experience in programming. This is the biggest benefit of the approach, because it shows that newbie students can develop better quality programs.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">One limitation of our proposed approach is that the test cases are generated considering reference programs and they are reused by the students to test equivalent programs. Thus, it is not expected that all aspects (for instance, all statements) of the student&rsquo;s program are tested, but that the test case sets are able to validate only functional aspects of the programs.&nbsp;</font></p>     <p>   <font face="Verdana" size="2">As future work we intend to conduct the same experiment using other courses and periods of the computer science courses and thereby obtain more general results about the hypotheses studied. Other studies can be developed considering covariates (extra information) possibly explaining the relationship between the results of the statistical tests.&nbsp;</font></p>     <p>    </p>     <p><font face="Verdana" size="2"><a id="x1-90008"></a>Acknowledgment</font></p>  <font face="Verdana" size="2">      ]]></body>
<body><![CDATA[<br> </font>     <p><font face="Verdana" size="2">The authors would like to thank the Brazilian funding agencies CAPES and FAPESP, for the financial support, under CAPES process DS-7109935/M and FAPESP processes: 2009/04517-2.&nbsp;</font></p>     <p>    </p>     <p><font face="Verdana" size="2"><a id="x1-100008"></a>References</font></p>     <div class="thebibliography">          <p><font face="Verdana" size="2"><span class="biblabel"><a name="c1"></a>   (<a href="#c1.">1</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>E.&nbsp;W. Dijkstra, &ldquo;Structured programming,&rdquo; O.&nbsp;J. Dahl, E.&nbsp;W. Dijkstra, and C.&nbsp;A.&nbsp;R. Hoare, Eds. London, UK, UK: Academic Press Ltd., 1972, ch. Chapter I: Notes on structured programming, pp. 1&ndash;82. </font> </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c2"></a>   (<a href="#c2.">2</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>E.&nbsp;J.  Weyuker,  &ldquo;Axiomatizing  software  test  data  adequacy,&rdquo;  <span class="cmti-10">IEEE  Transactions  on  Software</span>     <span class="cmti-10">Engineering</span>, vol.&nbsp;12, no.&nbsp;12, pp. 1128&ndash;1138, 1986. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c3"></a>   (<a href="#c3.">3</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>T.&nbsp;Shepard, M.&nbsp;Lamb, and D.&nbsp;Kelly, &ldquo;More testing should be taught,&rdquo; <span class="cmti-10">Commun. ACM</span>, vol.&nbsp;44,     pp. 103&ndash;108, June 2001. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c4"></a>   (<a href="#c4.">4</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>Y.&nbsp;D., Y.&nbsp;W., M.&nbsp;Lau, and S.&nbsp;yu&nbsp;L., &ldquo;Experiments on test case reuse of test coverage criteria,&rdquo; in <span class="cmti-10">Ubiquitous Intelligence Computing and 7th International Conference on Autonomic Trusted Computing</span>     <span class="cmti-10">(UIC/ATC), 7th International Conference on</span>, 2010, pp. 277&ndash;281. </font>      </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c5"></a>   (<a href="#c5.">5</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>L.&nbsp;Lima,  J.&nbsp;Iyoda,  A.&nbsp;Sampaio,  and  E.&nbsp;Aranha,  &ldquo;Test  case  prioritization  based  on  data  reuse     an  experimental  study,&rdquo;  in  <span class="cmti-10">3rd  International  Symposium  on  Empirical  Software  Engineering  and</span>     <span class="cmti-10">Measurement</span>, ser. ESEM &rsquo;09, 2009, pp. 279&ndash;290. </font>     </p>           ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="biblabel"><a name="c6"></a>   <a href="#c6.">(6</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>M.&nbsp;Mirzaaghaei, &ldquo;Automatic test suite evolution,&rdquo; in <span class="cmti-10">19th ACM SIGSOFT symposium and the 13th</span>     <span class="cmti-10">European conference on Foundations of software engineering</span>, ser. ESEC/FSE &rsquo;11, 2011, pp. 396&ndash;399. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c7"></a>(<a href="#c7.">7</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>C.&nbsp;Schulte,  T.&nbsp;Clear,  A.&nbsp;Taherkhani,  T.&nbsp;Busjahn,  and  J.&nbsp;H.  Paterson,  &ldquo;An  introduction  to     program comprehension for computer science educators,&rdquo; in <span class="cmti-10">2010 ITiCSE working group reports on</span>     <span class="cmti-10">Working group reports</span>, ser. ITiCSE-WGR &rsquo;10, 2010, pp. 65&ndash;86. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c8"></a>   (<a href="#c8.">8</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>E.&nbsp;L.  Jones,  &ldquo;Software  testing  in  the  computer  science  curriculum  &ndash;  a  holistic  approach,&rdquo;  in     <span class="cmti-10">Australasian conference on Computing education</span>, ser. ACSE &rsquo;00, 2000, pp. 153&ndash;157. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c9"></a>   (<a href="#c9.">9</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>&mdash;&mdash;, &ldquo;Grading student programs - a software testing approach,&rdquo; in <span class="cmti-10">fourteenth annual consortium</span>     <span class="cmti-10">on Small Colleges Southeastern conference</span>, ser. CCSC &rsquo;00, 2000, pp. 185&ndash;192. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c10"></a>  (<a href="#c10.">10</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>&mdash;&mdash;, &ldquo;Integrating testing into the curriculum &ndash; arsenic in small doses,&rdquo; in <span class="cmti-10">Thirty-second SIGCSE</span>     <span class="cmti-10">technical symposium on Computer Science Education</span>, ser. SIGCSE &rsquo;01, 2001, pp. 337&ndash;341. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c11"></a>  (<a href="#c11.">11)</a><span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>E.&nbsp;Jones, &ldquo;An experiential approach to incorporating software testing into the computer science     curriculum,&rdquo; in <span class="cmti-10">Frontiers in Education Conference, 2001. 31st Annual</span>, vol.&nbsp;2, 2001. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c12"></a>  (<a href="#c12.">12</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>S.&nbsp;H. Edwards, &ldquo;Teaching software testing: Automatic grading meets test-first coding,&rdquo; in <span class="cmti-10">Addendum</span>     <span class="cmti-10">to the 2003 Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and</span>     <span class="cmti-10">Applications</span>, 2003, pp. 318&ndash;319. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c13"></a>  (<a href="#c13.">13</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>A.&nbsp;Tinkham  and  C.&nbsp;Kaner,  &ldquo;Experiences  teaching  a  course  in  programmer  testing,&rdquo;  in  <span class="cmti-10">Agile</span>     <span class="cmti-10">Development Conference</span>, 2005, pp. 298&ndash;305. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c14"></a>  (<a href="#c14.">14</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>D.&nbsp;M. Souza and E.&nbsp;F. Barbosa, &ldquo;Progtest: An environment for the submission and automatic     evaluation  of  programming  assignments  based  on  testing  activities,&rdquo;  in  <span class="cmti-10">Simp&oacute;sio  Internacional  de</span>     <span class="cmti-10">Inicia&ccedil;&atilde;o Cient&iacute;fica da USP</span>, 2009, (in Portuguese). </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c15"></a>  (<a href="#c15.">15</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>S.&nbsp;H.  Edwards  and  M.&nbsp;A.  Perez-Quinones,  &ldquo;Web-cat:  automatically  grading  programming     assignments,&rdquo; in <span class="cmti-10">13th annual conference on Innovation and technology in computer science education</span>,     ser. ITiCSE &rsquo;08, 2008, pp. 328&ndash;328. </font>      </p>           ]]></body>
<body><![CDATA[<p><font face="Verdana" size="2"><span class="biblabel"><a name="c16"></a>  (<a href="#c16.">16</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>J.&nbsp;Spacco,  D.&nbsp;Hovemeyer,  W.&nbsp;Pugh,  F.&nbsp;Emad,  J.&nbsp;K.  Hollingsworth,  and  N.&nbsp;Padua-Perez,     &ldquo;Experiences  with  marmoset:  designing  and  using  an  advanced  submission  and  testing  system  for     programming courses,&rdquo; in <span class="cmti-10">11th annual SIGCSE conference on Innovation and technology in computer</span>     <span class="cmti-10">science education</span>, ser. ITICSE &rsquo;06, 2006, pp. 13&ndash;17. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c17"></a>  (<a href="#c17.">17</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>D.&nbsp;N. Campanha, S.&nbsp;R.&nbsp;S. Souza, O.&nbsp;A. Lemos, E.&nbsp;F. Barbosa, and J.&nbsp;C. Maldonado, &ldquo;Reuse of     test case sets: A study of domain of algorithms sorting,&rdquo; in <span class="cmti-10">VI Experimental Software Engineering Latin</span>     <span class="cmti-10">American Workshop</span>, 2009, pp. 114&ndash;123. </font>     </p>           <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c18"></a>  (<a href="#c18.">18)</a><span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>G.&nbsp;J. Myers, C.&nbsp;Sandler, T.&nbsp;Badgett, and T.&nbsp;M. Thomas, <span class="cmti-10">The art of software testing</span>.  John Wiley     &amp; Sons, Inc., Hoboken, New Jersey, 2004.     </font>     </p>           <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c19"></a>  (<a href="#c19.">19</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>M.&nbsp;E. Delamaro, J.&nbsp;C. Maldonado, and M.&nbsp;Jino, <span class="cmti-10">Introduction to software testing</span>, ser. Campus.     Elsevier, 2007, vol. 394, (in Portuguese).     </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c20"></a>  (<a href="#c20.">20</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>H.&nbsp;Zhu, P.&nbsp;A.&nbsp;V. Hall, and J.&nbsp;H.&nbsp;R. May, &ldquo;Software unit test coverage and adequacy,&rdquo; <span class="cmti-10">ACM</span>     <span class="cmti-10">Comput. Surv.</span>, vol.&nbsp;29, no.&nbsp;4, pp. 366&ndash;427, 1997. </font>     </p>           <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c21"></a>  (<a href="#c21.">21</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>R.&nbsp;S. Pressman, <span class="cmti-10">Software Engineering</span>, 5th&nbsp;ed.   McGraw-Hill, 2002.     </font>     </p>           <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c22"></a>  (<a href="#c22.">22</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>C.&nbsp;Wohlin, P.&nbsp;Runeson, M.&nbsp;H&ouml;st, M.&nbsp;C. Ohlsson, B.&nbsp;Regnell, and A.&nbsp;Wessl&eacute;n, <span class="cmti-10">Experimentation</span>     <span class="cmti-10">in software engineering: an introduction</span>.   Norwell, MA, USA: Kluwer Academic Publishers, 2000.     </font>     </p>           <!-- ref --><p><font face="Verdana" size="2"><span class="biblabel"><a name="c23"></a>  (<a href="#c23.">23</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>A.&nbsp;F.&nbsp;G.  Ascencio  and  E.&nbsp;A.&nbsp;V.  Campos,  <span class="cmti-10">Fundamentals  of  computer  programming</span>,  2nd&nbsp;ed.     Prentice Hall, 2007, (in Portuguese).     </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c24"></a>  (<a href="#c24.">24)</a><span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>D.&nbsp;A. Wiley, &ldquo;Connecting learning objects to instructional design theory: A definition, a metaphor,     and a taxonomy,&rdquo; <span class="cmti-10">The Instructional Use of Learning Objects Online Version</span>, vol. 2830, no. 435, pp.     1&ndash;35, 2000. </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c25"></a>  (<a href="#c25.">25)</a><span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>C.&nbsp;L.&nbsp;M.  Viana,  M.&nbsp;A.&nbsp;M.  A,  and  M.&nbsp;Shintaku,  &ldquo;Institutional  repositories  in  science  and     technology: an experience of customizing of the dspace,&rdquo; in <span class="cmti-10">Simp&oacute;sio de Bibliotecas Digitais</span>, S&atilde;o Paulo,     SP, Brasil, 2006, (in Portuguese). </font>     </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c26"></a>  (<a href="#c26.">26</a>)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>M.&nbsp;A.&nbsp;A. Mardero, &ldquo;Dspace repositorie and digital preservation,&rdquo; in <span class="cmti-10">Encontro de Informa&ccedil;&atilde;o em</span>     <span class="cmti-10">Ci&ecirc;ncias da Comunica&ccedil;&atilde;o</span>, 2004, p.&nbsp;14, (in Portuguese). </font>      </p>           <p><font face="Verdana" size="2"><span class="biblabel"><a name="c27"></a>  (27)<span class="bibsp">&nbsp;&nbsp;&nbsp;</span></span>G.&nbsp;R.&nbsp;B. Fachin, J.&nbsp;Stumm, R.&nbsp;L. Comarella, F.&nbsp;A.&nbsp;P. Fialho, and N.&nbsp;Santos, &ldquo;Knowledge management and cognitive view of institutional repositories,&rdquo; <span class="cmti-10">Perspect. ci&ecirc;nc. inf.</span>, vol.&nbsp;14, no.&nbsp;2, pp.     220&ndash;236, 2009, (in Portuguese). </font> </p>      </div>            ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Dijkstra]]></surname>
<given-names><![CDATA[E. W]]></given-names>
</name>
<name>
<surname><![CDATA[Dahl]]></surname>
<given-names><![CDATA[O. J]]></given-names>
</name>
<name>
<surname><![CDATA[Dijkstra]]></surname>
<given-names><![CDATA[E. W]]></given-names>
</name>
<name>
<surname><![CDATA[Hoare]]></surname>
<given-names><![CDATA[C. A. R]]></given-names>
</name>
</person-group>
<source><![CDATA[Structured programming]]></source>
<year>1972</year>
<page-range>1-82</page-range><publisher-name><![CDATA[Academic Press Ltd]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Weyuker]]></surname>
<given-names><![CDATA[E. J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Axiomatizing software test data adequacy]]></article-title>
<source><![CDATA[IEEE Transactions on Software Engineering]]></source>
<year>1986</year>
<volume>12</volume>
<numero>12</numero>
<issue>12</issue>
<page-range>1128-1138</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shepard]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Lamb]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Kelly]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[More testing should be taught]]></article-title>
<source><![CDATA[Commun. ACM]]></source>
<year>June</year>
<month> 2</month>
<day>00</day>
<volume>44</volume>
<page-range>103-108</page-range></nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Y]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Y]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Lau]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[yu L]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Experiments on test case reuse of test coverage criteria]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[7 inUbiquitous Intelligence Computing and 7th International Conference on Autonomic Trusted Computing (UIC/ATC)]]></conf-name>
<conf-date>2010</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lima]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Iyoda]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Sampaio]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Aranha]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<source><![CDATA[Test case prioritization based on data reuse an experimental study]]></source>
<year>2009</year>
<conf-name><![CDATA[ 3rd International Symposium on Empirical Software Engineering and Measurement]]></conf-name>
<conf-loc> </conf-loc>
<page-range>279-290</page-range></nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mirzaaghaei]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Automatic test suite evolution]]></source>
<year>2011</year>
<conf-name><![CDATA[ 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering]]></conf-name>
<conf-loc> </conf-loc>
<page-range>396-399</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Schulte]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Clear]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Taherkhani]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Busjahn]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Paterson]]></surname>
<given-names><![CDATA[J. H]]></given-names>
</name>
</person-group>
<source><![CDATA[An introduction to program comprehension for computer science educators]]></source>
<year>2010</year>
<conf-name><![CDATA[ 2010 ITiCSE working group reports on Working group reports]]></conf-name>
<conf-loc> </conf-loc>
<page-range>65-86</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[E. L]]></given-names>
</name>
</person-group>
<source><![CDATA[Software testing in the computer science curriculum: a holistic approach]]></source>
<year>2000</year>
<conf-name><![CDATA[ Australasian conference on Computing education]]></conf-name>
<conf-loc> </conf-loc>
<page-range>153-157</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="confpro">
<source><![CDATA[Grading student programs: a software testing approach]]></source>
<year>2000</year>
<conf-name><![CDATA[ fourteenth annual consortium on Small Colleges Southeastern conference]]></conf-name>
<conf-loc> </conf-loc>
<page-range>185-192</page-range></nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<source><![CDATA[Integrating testing into the curriculum: arsenic in small doses]]></source>
<year>2001</year>
<conf-name><![CDATA[ Thirty-second SIGCSE technical symposium on Computer Science Education]]></conf-name>
<conf-loc> </conf-loc>
<page-range>337-341</page-range></nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jones]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
</person-group>
<source><![CDATA[An experiential approach to incorporating software testing into the computer science curriculum]]></source>
<year>2001</year>
<volume>2</volume>
<conf-name><![CDATA[ Frontiers in Education Conference]]></conf-name>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Edwards]]></surname>
<given-names><![CDATA[S. H]]></given-names>
</name>
</person-group>
<source><![CDATA[Teaching software testing: Automatic grading meets test-first coding]]></source>
<year>2003</year>
<conf-name><![CDATA[ Addendum to the 2003 Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and Applications]]></conf-name>
<conf-loc> </conf-loc>
<page-range>318-319</page-range></nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tinkham]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Kaner]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Experiences teaching a course in programmer testing]]></source>
<year>2005</year>
<conf-name><![CDATA[ Agile Development Conference]]></conf-name>
<conf-loc> </conf-loc>
<page-range>298-305</page-range></nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Souza]]></surname>
<given-names><![CDATA[D. M]]></given-names>
</name>
<name>
<surname><![CDATA[Barbosa]]></surname>
<given-names><![CDATA[E. F]]></given-names>
</name>
</person-group>
<source><![CDATA[Progtest: An environment for the submission and automatic evaluation of programming assignments based on testing activities]]></source>
<year>2009</year>
<conf-name><![CDATA[ Simpósio Internacional de Iniciação Científica da USP]]></conf-name>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Edwards]]></surname>
<given-names><![CDATA[S. H]]></given-names>
</name>
<name>
<surname><![CDATA[Perez-Quinones]]></surname>
<given-names><![CDATA[M. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Web-cat: automatically grading programming assignments]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 13th annual conference on Innovation and technology in computer science education]]></conf-name>
<conf-date>2008</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Spacco]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Hovemeyer]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Pugh]]></surname>
<given-names><![CDATA[W]]></given-names>
</name>
<name>
<surname><![CDATA[Emad]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Hollingsworth]]></surname>
<given-names><![CDATA[J. K]]></given-names>
</name>
<name>
<surname><![CDATA[Padua-Perez]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Experiences with marmoset: designing and using an advanced submission and testing system for programming courses]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ 11th annual SIGCSE conference on Innovation and technology in computer science education]]></conf-name>
<conf-date>2006</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Campanha]]></surname>
<given-names><![CDATA[D. N]]></given-names>
</name>
<name>
<surname><![CDATA[Souza]]></surname>
<given-names><![CDATA[S. R. S]]></given-names>
</name>
<name>
<surname><![CDATA[Lemos]]></surname>
<given-names><![CDATA[O. A]]></given-names>
</name>
<name>
<surname><![CDATA[Barbosa]]></surname>
<given-names><![CDATA[E. F]]></given-names>
</name>
<name>
<surname><![CDATA[Maldonado]]></surname>
<given-names><![CDATA[J. C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Reuse of test case sets: A study of domain of algorithms sorting]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[VI Experimental Software Engineering Latin American Workshop]]></conf-name>
<conf-date>2009</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Myers]]></surname>
<given-names><![CDATA[G. J]]></given-names>
</name>
<name>
<surname><![CDATA[Sandler]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Badgett]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Thomas]]></surname>
<given-names><![CDATA[T. M]]></given-names>
</name>
</person-group>
<source><![CDATA[The art of software testing]]></source>
<year>2004</year>
<publisher-loc><![CDATA[Hoboken^eNew Jersey New Jersey]]></publisher-loc>
<publisher-name><![CDATA[John Wiley & Sons, Inc]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="">
<source><![CDATA[]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zhu]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[Hall]]></surname>
<given-names><![CDATA[P. A. V]]></given-names>
</name>
<name>
<surname><![CDATA[May]]></surname>
<given-names><![CDATA[J. H. R]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Software unit test coverage and adequacy]]></article-title>
<source><![CDATA[ACM Comput. Surv]]></source>
<year>1997</year>
<volume>29</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>366-427</page-range></nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pressman]]></surname>
<given-names><![CDATA[R. S]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Engineering]]></source>
<year>2002</year>
<edition>5</edition>
<publisher-name><![CDATA[McGraw-Hill]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wohlin]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[Runeson]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Höst]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Ohlsson]]></surname>
<given-names><![CDATA[M. C]]></given-names>
</name>
<name>
<surname><![CDATA[Regnell]]></surname>
<given-names><![CDATA[B]]></given-names>
</name>
<name>
<surname><![CDATA[Wesslén]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Experimentation in software engineering: an introduction]]></source>
<year>2000</year>
<publisher-loc><![CDATA[Norwell^eMA MA]]></publisher-loc>
<publisher-name><![CDATA[Kluwer Academic Publishers]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ascencio]]></surname>
<given-names><![CDATA[A. F. G]]></given-names>
</name>
<name>
<surname><![CDATA[Campos]]></surname>
<given-names><![CDATA[E. A. V]]></given-names>
</name>
</person-group>
<source><![CDATA[Fundamentals of computer programming]]></source>
<year>2007</year>
<edition>2</edition>
<publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wiley]]></surname>
<given-names><![CDATA[D. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Connecting learning objects to instructional design theory: A definition, a metaphor, and a taxonomy]]></article-title>
<source><![CDATA[The Instructional Use of Learning Objects Online Version]]></source>
<year>2000</year>
<volume>2830</volume>
<numero>435</numero>
<issue>435</issue>
<page-range>1-35</page-range></nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Viana]]></surname>
<given-names><![CDATA[C. L. M]]></given-names>
</name>
<name>
<surname><![CDATA[M. A]]></surname>
<given-names><![CDATA[M. A]]></given-names>
</name>
<name>
<surname><![CDATA[Shintaku]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Institutional repositories in science and technology: an experience of customizing of the dspace]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Simpósio de Bibliotecas Digitais]]></conf-name>
<conf-loc>São Paulo SP</conf-loc>
</nlm-citation>
</ref>
<ref id="B26">
<label>26</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Mardero]]></surname>
<given-names><![CDATA[M. A. A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Dspace repositorie and digital preservation]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[14 Encontro de Informação em Ciências da Comunicação]]></conf-name>
<conf-date>2004</conf-date>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B27">
<label>27</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fachin]]></surname>
<given-names><![CDATA[G. R. B]]></given-names>
</name>
<name>
<surname><![CDATA[Stumm]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Comarella]]></surname>
<given-names><![CDATA[R. L]]></given-names>
</name>
<name>
<surname><![CDATA[Fialho]]></surname>
<given-names><![CDATA[F. A. P]]></given-names>
</name>
<name>
<surname><![CDATA[Santos]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Knowledge management and cognitive view of institutional repositories]]></article-title>
<source><![CDATA[Perspect. ciênc. inf]]></source>
<year>2009</year>
<volume>14</volume>
<numero>2</numero>
<issue>2</issue>
<page-range>220-236</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
