<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE CAT [ <!ENTITY nbsp  "&#160;"> ]>
<CAT xmlns:cat="http://www.w3.org/TR/html4/" version="2.0"> 
<cat:title>Structures and Arrays Defining Features Matrix</cat:title>
<cat:author>Kate Deibel</cat:author>
<cat:date>Oct 22, 2003</cat:date>

<cat:technique>Defining Features Matrix</cat:technique>

<cat:purpose>
<p>
This CAT allows instructors to find out if students understand the similarities and differences between an array and a struct as data structures.
</p>
</cat:purpose>
<cat:activity>
<p>
Fill out the following matrix. This matrix lists some conjectures and it's your job to decide if these hold under two conditions. The first condition is the case of an array and the second condition is the case of a structure. Please write "+" or '-' in the blank cells of the table.
</p>

<br></br>

<center>

<table border="1" cols="3" width="100%">
<tr>
<td>
Conjecture
</td>
<td align="center">
Array
</td>
<td align="center">
Struct
</td>
</tr>
<tr>
<td>
Holds multiple pieces of data
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Data must be of the same type
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Can compare to another of same type using ==
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Can be copied by using =
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Always passed as a parameter as call by reference
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Allow programmers to build new types
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Can print all contents with a single printf statement
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
Field access operator is .
</td>
<td>
&nbsp;
</td>
<td>
&nbsp;
</td>
</tr>
</table>
</center>
</cat:activity>
<cat:solution>
<br></br>

<center>

<table border="1" cols="3" width="100%">
<tr>
<td>
Conjecture
</td>
<td>
Array
</td>
<td>
Struct
</td>
</tr>
<tr>
<td>
Holds multiple pieces of data
</td>
<td align="center">
+
</td>
<td align="center">
+
</td>
</tr>
<tr>
<td>
Data must be of the same type
</td>
<td align="center">
+
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td>
Can compare to another of same type using ==
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td>
Can be copied by using =
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td>
Always passed as a parameter as call by reference
</td>
<td align="center">
+
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td>
Allow programmers to build new types
</td>
<td align="center">
-
</td>
<td align="center">
+
</td>
</tr>
<tr>
<td>
Can print all contents with a single printf statement
</td>
<td align="center">
-
</td>
<td align="center">
-
</td>
</tr>
<tr>
<td>
Field access operator is .
</td>
<td align="center">
-
</td>
<td align="center">
+
</td>
</tr>
</table>

</center>
</cat:solution>
<cat:analysis>
<p>
The following must be done out of class:
</p>

<ol>
<li>In a first pass, mark and count the number of incorrect answers. Also, mark any answers that you find surprising.</li>
<li>For each question that has a significant (your judgement call) of incorrect answers, do the following:
<ol type="a">
<li>Look through the answers to these questions.</li>
<li>Attempt to identify the nature of the most common errors that are made.</li>
</ol>
</li>
<li>Discuss these errors in class, using the common mistakes that you identified .</li>
</ol>

<p>
In-class feedback can be done by having students write or say out loud their own answers, but caution must be taken to avoid embarassing or ridiculing a student for making mistakes.
</p>
</cat:analysis>
<cat:variant_uses>
	<cat:variation>Have students write short explanations for their answers in the matrix.</cat:variation>
	<cat:variation>Have students correct any names that score a minus in any column.</cat:variation>
	<cat:variation>Have students work in groups to complete this activity. The instructor may want to circulate throughout the groups to ensure that each group is making progress. After the groups have completed their matrix, the instructor can ask for volunteers for each item. Be sure to ask for explanations as to why they assigned a plus or minus to each column.</cat:variation>
	<cat:variation>Have students work individually on their problems and form a small group to discuss their answers.</cat:variation>
</cat:variant_uses>
<cat:classification>
<cat:assessment_goals>
	<cat:goal>Develop analytic skills</cat:goal>
	<cat:goal>Improve memory skills</cat:goal>
	<cat:goal>Learn terms and facts of this subject</cat:goal>
	<cat:goal>Learn concepts and theories of this subject</cat:goal>
</cat:assessment_goals>
<cat:topics>
	<cat:topic>Arrays</cat:topic>
	<cat:topic>Structures</cat:topic>
	<cat:topic>C</cat:topic>
	<cat:topic>Types</cat:topic>
</cat:topics>
<cat:participation_level>
</cat:participation_level>
<cat:time>
	<cat:preparation_time>MEDIUM</cat:preparation_time>
	<cat:class_time>LOW</cat:class_time>
	<cat:in_class_analysis_time>LOW</cat:in_class_analysis_time>
	<cat:out_class_analysis_time>LOW</cat:out_class_analysis_time>
</cat:time>
<cat:instructor_response>
	<cat:response>Lecture</cat:response>
	<cat:response>Next Day Summary</cat:response>
	<cat:response>Class Discussion</cat:response>
	<cat:response>Small Group Discussions</cat:response>
	<cat:response>Homework</cat:response>
</cat:instructor_response>
<cat:device_enabled>Has Been Enabled</cat:device_enabled>
<cat:related_topics>
	<cat:topic>Classes</cat:topic>
	<cat:topic>Functions</cat:topic>
	<cat:topic>Unions</cat:topic>
	<cat:topic>Objects</cat:topic>
</cat:related_topics>
</cat:classification>
</CAT>