The day I was asked to take over the computer science
curriculum at my previous school I was given the choice of continuing a
programming project that students were working on with the previous instructor or start from “scratch” (pun not initially intended). The students
were working on building a calculator through Visual Studio using C#. To me – I
felt sorry for the students because I thought this could quite possibly be the most
boring programming assignment for a high school student. They all owned
calculators or could use a calculator on their home or school computers. Why
would a high school student be remotely interested in building one? And in C#,
no less.
Based on our readings and class discussions – I think this
project may be potentially useful at a younger age (middle school) using
Scratch. Each digit/key would be a sprite programmed to do a certain task or
representing a certain value (a value that must be saved in the flow of the
program until the equal sign is clicked). The assignment plan:
1.
Students work in groups to:
a.
Decide on look of calculator (choose images for
sprites)
b.
Assign tasks (one student may be responsible for
the sprites that represent numbers, another student may be responsible for +
and -, etc)
2.
Each individual member of the group is
responsible for coding specific sprites based on the initial group meeting
3.
Lab Meeting: groups given time in class to
discuss their initial findings on coding of the sprites. Did they have similar
findings/algorithms? Should they change their initial plan based on their
progress?
4.
HW: Individual assignments due
5.
Lab Day: Groups will be given lab time to combine
their code, test their calculator and finalize their calculator for submission.
The overall flow of the assignment may not be optimum (for
instance, maybe it is better to complete the entire assignment in class with
teacher supervision).
In terms of assessment, the easiest assessment piece would
be the accuracy of the calculator. Do sprites do as intended? It would be
worthwhile to do a pre- and post- assessment for this assignment on topics
ranging from adding, subtracting, multiplying and dividing to an understanding
of components of an equation (in x – y, what is the relationship of y to x?
(maybe not the best example)). This would allow for a teacher to see if there
is an improvement in understanding the math concepts addressed by building a calculator.
In terms of computational thinking, I believe a quality
rubric focused on abilities such as planning, debugging, collaboration is needed
(as discussed on p3 of Grover and Pea, in reference to a Conley and
Darling-Hammond article). In addition, the ability to build a calculator
involves ideas or concepts necessary in object-oriented programming languages.
In this case, each sprite is an object and each student group needs to
correctly implement the appropriate relationships between the objects for the
calculator to work. A more informal assessment could be completed that gets the
students understanding of the relationships between sprites and how the
relationships fit into the bigger picture of their submitted calculator.
I would love to hear what you all think – especially downsides
or fixes you may have for this idea!
This is a well thought out and interesting lesson plan. What I need a little clarification on, is how creating the sprite's function would promote a deeper understanding of what that function accomplishes for mathematicians. Would this be clarified in a discussion format, or would students come to their own conclusions based on experience with the program? Also would the goal of this assignment be to encourage computational thinking or would computational thinking support the ultimate goal of concept proficiency? I acknowledge this is a question we seem to come back to more and more in our discussions. So I am not proposing you give me the end al be all answer on which is more worthwhile.
ReplyDeleteUnfortunately, I have never taught a math class, but based on how I was thinking I believe the best way to answer your question would be to ask -- how would you program a calculator? The pitfalls students reach due to the affects coding one sprite (primarily the addition, subtraction, multiplying and dividing sprites) may have on the outcome of using other sprites can be quite telling. In fact, some may resort to having lengthy conditionals that are implemented when the equal sign is clicked instead of coding each individual sprite (other than to save the action). Perhaps this lesson plan would be more worthwhile prior to the introduction of variables or as a segue into algebra 1, as I do not think it is necessarily a test of their ability to add, but more of an understanding of different parts of an equation.
DeleteComputational thinking would support the ultimate goal of concept proficiency.
This comment has been removed by the author.
ReplyDeleteI like the idea of each sprite acting as a command on a calculator. It begins to address the reification of symbols. I think this project would be helpful to assess students understanding of a mathematical concept previously taught through programing. I see this activity as a way to use, and consequently learn, a programing language. I think a prerequisite of this would be for students to have a firm grasp of the function they are assigned to programing a sprite to do. If they didn't fully understand the mathematical implications of a + sign then they wouldn't necessarily know when to debug their sprite based on the output when using the sprite.
ReplyDelete