&smileys-prefix;Drawing Smiley Faces, RevisitedDue: &smileys-due;
Summary:
In this assignment, you will extend your work
from the introductory lab on writing algorithms.
Purposes:
To give you more experience thinking about
writing algorithms. To give you the opportunity to identify parts of
an algorithm.
Expected Time:
Two to three hours.
Collaboration:
I would prefer that you work in groups of size three. However, you may
work alone, in a group of size two, or a group of size four. You may
discuss this assignment and possible solutions with anyone you wish.
If you discuss this assignment with people other than group members,
make sure to include a citation (e.g., I consulted this
person, who helped me do this).
Submitting:
Send your answer to &grader-email;.
The title of your email should have the form
&smileys-subject; and should contain your
answers to all parts of the assignment. I prefer that you put your
answers in the body of the message, rather than as an attachment.
So that this assignment is a learning experience
for everyone, I may spend class time publicly critiquing your work.
Background
In the first laboratory for
this course, we asked various groups to consider mechanisms
for drawing smiley faces. Given the limits of class time, we were
not able to consider every mechanism. Since then, we've also learned
another mechanism for describing images: The GIMP tools.
What kinds of things might one consider in assessing the various solutions?
One might reflect on the accuracy and complexity of each algorithm. One
might look at the use of various algorithm components (repetition,
conditionals, naming, subroutines, etc.) One might compare the different
core operations.
AssignmentPart One: Drawing Through Dots, Revisited
Write instructions for drawing a smiley face.
In those instructions, you should assume that the person doing the
drawing has been so corrupted by the impressionists that the primary
thing they know how to do is draw a dot on the canvas in a specified
color at a specified location.
The person following the instructions will be drawing the smiley
face on a canvas 101 millimeters by 101 millimeters. The tip of the
paintbrush is about one millimeter by one millimeter. To simplify your
descriptions, the canvas is represented by a grid of size 100x100.
In referring to a point on the grid, you need to indicate the row
and column. We will start numbering with row 0 (the top row) and
column 0 (the leftmost column). In referring to rows and columns,
you may only use whole numbers.
Because it can be difficult to describe each dot individually, you
may also assume that the person reading your instructions can figure
out sets of dots that meet clearly-specified criteria, so that you
can give instructions like put orange dots at all positions in
which the sum of the row number and the column number is 10
or put green dots in all positions in which the product of the
row number and column number is less than 20.
You may also assume that your reader can can compute functions,
so that you can write things like for all integers,
c, between 1 and 20, put a violet dot in the grid
point whose column is c and whose row number is
c*c+5.
Part Two: Drawing with Robotic Turtles
Write instructions for drawing a smiley face in a square that is
101 centimeters by 101 centimeters. Your reader will be drawing
the face on the floor with pens whose tips are approximately
one centimeter wide.
In those instructions, you should assume that your reader is limited
to the following basic actions.
selecting a color of pen;
making sure that the tip of the current pen is in contact with the floor;
lifting the pen off the floor;
moving forward a specified distance;
turning left or right by a certain angle;
repeating any combination of actions some number of times; and
repeating any combination of actions until some condition is reached.
For example, to have your reader draw the outline of a blue square of
edge length one foot, you might tell your reader to
Select a blue pen.
Make sure the tip of the pen is in contact with the floor.
Repeat the following actions four times.
Move forward one foot.
Turn right 90 degrees.
This technique for drawing mimics one of the more popular ways to teach
robots how to draw, and is called turtle graphics.
You may assume that your reader will start at the center of the area in
to draw, and that your reader is facing North.
Note that it is relatively straightforward to draw the outline of a
circle or face using turtles: You repeatedly move forward a small amount
and turn a small amount. It is a bit more complicated to draw a
filled-in circle. Please try to figure out how.
Part Three: Giving GIMP Instructions
Write instructions for drawing a smiley face.
In these instructions, you should assume that your reader is using
GIMP to draw, that they want to draw a smiley face that is 101 pixels
wide and 101 pixels high, and that they are familiar enough with
GIMP to identify and use tools. You will, however, have to be very
precise in describing where on the image window they should click.
Part Four: Comparing Types of Drawing
You have now explored a variety of models of drawing: drawing through circles
(done in the lab), drawing through grids of dots (as in part one),
drawing through turtle motion (as in part two), and drawing through GIMP
tools (as in part three).
a. Which was the easiest model in which to describe how to draw a smiley face? Why?
b. If you had to draw a simple picture of a house, which would you prefer?
Why?
c. If you had to draw a stick figure, which would you prefer? Why?
d. If you had to draw a spiral, which would you prefer? Why?
Important Evaluation Criteria
The first criterion we will use in evaluating your assignments is
correctness - is each set of instructions likely
to produce the desired image. As we consider correctness, we will
also check to see whether you have avoided ambiguous instructions and
how easy it is for a reader to misinterpret those instruction.
The second criterion we will use is creativity.
We will consider whether you have used innovative or particularly
interesting techniques for giving instructions or analyzing the choices
in part four.