Consider the image below. We would typically have information like , , and with a series of questions about the other angles.

If we want this randomized, there are a couple of approaches. First, randomizing the angle measures is fairly straightforward. We can even put those dynamic values onto the figure. Second, randomizing the labels for the points and angles can further modify the figure.

Start by creating an unlabeled graphic in whatever editor you prefer. I generally use Geogebra, remove the labels from the figure, and either export it or copy and paste into Paint and save it.

I am going to start by modifying the original semi-dynamic problem that used the first image.

The values for ang1, ang2, etc. are from simple algorithms definitions. We can keep those for now, but much of that will changes as we consider dynamic labels.

Create a new algorithm definition for *letters: list(“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”J”,”K”,”L”)*. That is 11 letters. We need four, preferably sequential. Thus, next definition is *index: range(1,8)*. The highest value of 8 will start with H and go through L. Now, four more definitions: *A: choose(index + 0, letters), B: choose(index + 1, letters), C: choose(index + 2, letters), *and *D: choose(index + 3, letters)*. Great! There are four randomized labels! Placing them is another issue . . .

Randomizing the angle numbers is more problematic. Generally, it is good form to keep them numerically sequenced from one side of the figure and go around to the other. That really leaves us with only two good options: the one in the original figure or going the other way. There are probably many other ways to do this than the one I am proposing here, but this should be pretty clear once you see it.

The value for aindex will simple pick the first or second text value for each of the angle labels. It is best to keep thinking of the angles and points as they are numbered and labeled in the original figure. What they are called in the problem will change.

is no longer static text, so it needs to be changed in the equation editor. Insert the variables *A, B, C, *and *D* with overbars and the parallel symbol.

Next, this is what it will look like for the measure of angle 1. Do the same for angle 2 (using *a2t* and *ang2*).

Let’s setup the answers, and then we can deal with the more compicated process of labelling the blank figure. The answers, from some simple geometry calculations are:

On to the figure . . . Insert Graph, Cartesian, and clear the current values for its setup.

On the function tab, choose New Picture and select the unlabeled image you created.

You will then need to add another new function: New, Text Box . . . ten times! We will do it once for each label. In the text field, use the names of the algorithm definitions. Thus, the first one will be *A*, and then we change the Left x and Top y values to try to place it where the A label is on the original figure. Using Apply will update the full graph in the question and can help you get the labels located properly. Then, repeat for each of the other three point labels and the angle numbers. I also change the font for the angle numbers to Arial and red for clarity.

The final question should have all of the labels properly placed. Click the randomize icon a few times and verify that all of the information, especially the answers, is correct. It is much better to find any errors now rather than have a frustrated student come at you!

]]>Also, beware, once you save a test or question bank in a later version, you may not be able to open it in an earlier version. Be sure you are really going to dance with the new partner if you use a later version. I seem to be able to open 7.5 vesion question banks in 6.1.1, however.

Beware, again, that there is a lot of old information on the Internet about ExamView and many links to the old seller, Fscreations. Don’t click on those links. The domain is squatted and leads to nefarious sites. The old forum at examview.com has a bit of useful information, but much of it is outdated.

For example, some older versions of ExamView could export tests and banks as XML documents. While you can still import XML, it will no longer export. That means that an old workaround to copy narratives with algorithm definitions no longer works.

]]>Starting with a new short answer question, go right into Algorithm Definitions. I start with four variables, *a, b, c, *and *d* for single digit numbers. Notice the simple condition *isunique*, which forces each of the variables to have a unique value. Also, it is probably best to avoid using *1* for any of the numbers.

Anticipating some division, I want to set up some multiples that will divide evenly. The variable, *multiplier*, will handle this. Then, *a*multiplier* will be the *product. *Thus, , or vice versa.

From here, it is quite easy to build up a series of order of operations expressions. I start by creating the problem in the equation editor and then create or redefine a variable for the *answer*. This first problem is a good place to begin.

If you want to keep the value of expressions positive, it is worthwhile to create another variable with a bigger number. For example, create *bignumber* with range (19,29) so that *bignumber-a*b *will be positive. You can also force that by creating a condition for *bignumber-a*b* > 0.

]]>

This question bank serves to keep a parallel structure with all generated problems. For example, if one quiz has , another one could have with the positive and negative values in the same place.

So, let’s take a look at how to create these dynamic questions in ExamView. First, we will create some simple distributive property problems where the variable has a coefficient of one, e.g. .

Start by creating a new problem. I generally use short answer for all question banks. There are several variables we will need to set, so first, choose *Algorithm Definitions* from the *Edit* menu.

I like to start with randomly generating a variable instead of using all the time. Click, NEW, and leave the default *Type:* variable. You can call it almost anything you want, but I will call it “letters.”

The “Definition” for letters will be a “list.” Essentially, it is just a list of text strings separated by commas. Most importantly, each string must be contained in quotes and the commas are between the quoted items in the list. Thus,** list(“a”,”b”,”c”,”d”,”m”,”n”,”w”,”x”,”y”,”z”)** is the definition for letters.

Now, we need to choose one of the items from that list. The use of list and choose is a really useful technique, and you will see some other situations where you can use it to pick random items for word problem or student names to make word problems more personal and interesting.

Notice, there are ten items in the *letters* list. That means we need to get a random number from 1 to 10. There are several ways to do this. One method is to use the *range* function, but in this situation *rand *will be a bit more straightforward. We will revisit *range *in numerous other scenarios.

Create a new algorithm, type:variable, and not to be too confusing, but we will call it “variable.” You could really call it whatever you want, but just be sure to remember what you call it. The definition will use both *choose *and *rand*: **choose(rand(10),letters)**.

The distributive property problem will be in the format . The variable is set, so we now need values for *k* and *c*. Each of these will be essentially the same process. We will use the *range* function for each. *Range *simply picks a number between two values. There is an optional *step* parameter, and the default is 1. For *k*, create a new variable, call it *k*, and use this definition: **range(2,4)**. If you use **range(2,4,1)**, that serves the same purpose but specifically identifies the step as 1. In the *format *pull down list, choose *Coefficent (1st)*. This will take care of putting a “-” in front of a negative value or leaving off the “+” from a positive value. Of course, we know it is positive for this problem, but if we copy this problem in order to create a new one, that will come in handy (see part 2).

Then, create another variable, *c*, and use **range(2,5)** for the definition. The format for *c* is important. Be sure to choose coefficient from the pull down list. This will automatically take care of the + or – when formatting the problem. Naturally, you can specify whatever range of values you wish, but I like to keep the multiplication pretty simple when assessing comprehension of distribution.

At this point, we have a variable called *variable* which will use one of the letters from the list of ten. We have two other variables, *k *and *c*, which are numerical values. There are two remaining, important steps. One, we need to compute the answer. Two, we need to display the problem and solution with math formatting.

There is only one computation necessary for this problem, multiplying *k *and *c*. Create a new variable and call it *productkc*, or anything you want. The definition is a simple multiplication function: **k*c**. Choose *coefficent *as the format. That’s it for that.

Go ahead and close the algorithm window if you have not done so already. Notice there are two empty boxes for the problem: *Question* and *Answer*. With your cursor in the *Question *box, go to the *Insert *menu and choose *Equation*. A handy shortcut is CTRL-E, which is something you will probably want to get ingrained pretty quickly.

Now, with the *Equation Editor *open, we can have the distributive property problem formatting nicely. Start by clicking the *Insert Variable *button. Pick *k *from the list, and okay. Then, type “(” and pick the next variable, *variable*. Do this again by picking *c*. Notice, we are not adding a “+” between the terms. That will be taken care of by *c* being specified as a coefficient. Finally, type the closing parentheses, “)”. Click the *Record *button.

For the *Answer *box, follow the same process. CTRL-E to insert an equation. Insert variable: insert *k*, then insert *variable*, then insert *productkc.*

In part 2, we will look at adding versions with negatives in all combinations of the three places. In part 3, add a coefficient for the variable!

]]>- , adding a negative to a positive and the result is positive, essentially a trivially modified subtraction problem.
- , similar to the first, but the result is negative. These two slightly varied addition problems are quite different for student beginning to learn the concepts.
- , adding a positive to a negative where the results is positive.
- , adding a positive to a negative where the result is negative.
- , adding two negatives.

For subtraction, there are several more variations.

- , probably okay to ignore the trivial situation, right?
- , subtracting a larger number from a smaller number. This is really the fundamental jumping off place for the conceptual leap of subtraction going into the realm of negatives.
- , subtracting from a negative, resulting in a number that is more negative.
- , subtracting a negative from a positive, which, yes, is essentially just adding two positive numbers. It can be surprising how challenging this can be to really grasp, though.
- , subtracting a negative from a negative with a positive result. Contrast that with the next . . .
- , where the result is negative.

Those last two can be really hairy for students learning these concepts. We want our quiz to provide diagnostic distinctions between all of these types of problems rather than treating them all as the same concept. Clearly, the choice of when and how to introduce, practice, and assess this material is yours. I do recommend quizzing each concept incrementatlly.

Starting with a new question in ExamView Question Bank editor, let’s build some algorithm definitions. For the first problem, define *a* and *b*, the *answer* as *a+b*, and a condition to prevent the answer from being zero. The algorithm definitions will keep the result positive.

Using CTRL-e to open the equation editor, you can enter the simple expression using the variables and the proper symbols.

]]>