Introducing Coding in a Pre-service Mathematics Course – When you’ve Never Coded!

by Donna Kotsopoulos and Julie Mueller

Donna Kotsopoulos (dkotsopo@wlu.ca) is a professor of mathematics education at Wilfrid Laurier University’s Faculty of Education. She is also a wannabe coder and an Ontario Certified Teacher. Her research focuses on mathematics education across the lifespan. She has a specific interest in early childhood education. legacy.wlu.ca/mathbrains

Julie Mueller (jmueller@wlu.ca) is an associate professor in the Faculty of Education at Laurier teaching in Learning and Child Development along with Health and Physical Education–always making the mind/body connection! She is currently exploring computational thinking and assessment of problem solving across the curriculum and working with industry partners and teachers to infuse learning with active, tech-enhanced learning. makeithappenwlu.com

FullSizeRenderA worldwide interest in coding has emerged in business, politics, and education; and, in the more broadly defined concept of “computational thinking.” There is a compelling belief that in order to participate in what is increasingly a techno-focused world, citizens must be digitally literate. Few people need convincing of this, given the ways in which technology has pervaded all aspects of our lives. Most new cars, for example, require some level of understanding of menu navigation in order to make sense of the computer running the car. Some skill in touch screen menu selection is required to withdraw money from a bank machine. All in all, some level of computational thinking is necessary by all people of most ages.

Computational thinking (CT), can be considered an approach to problem solving using a particular mindset found in computing or computer technology (Mueller, Beckett, Hennessey, & Shodiev, under review 2016; Wing, 2006, 2008). CT can also be viewed as thinking algorithmically by using principles from computer science as a guiding structural, and sometimes metaphorical, framework (Shodiev, 2013). CT describes a broad range of abilities, including experimenting and iterating, testing and debugging, reusing and remixing, abstracting, and modularizing (Kotsopoulos et al., under review 2016). Coding (or computer programming) is one example of an activity that makes use of computational thinking.

Policy makers have particularly been influenced by the belief that “the future will be built by those who can code” (SITRA, 2014). Many jurisdictions around the world are introducing coding as mandatory curriculum. Most recently, the British Columbia government introduced new curriculum including coding from Kindergarten to Grade 12 as part of the province’s wider strategy to support the tech sector (British Columbia Government, 2016). The drive to include CT and specifically coding in curriculum from elementary through secondary education, demands that teacher educators expand their instruction to address these transformations.

Planning for teacher education is very much a reflective process and underlying this process is a commitment to ensuring that teachers are prepared for classrooms of today and tomorrow and not classrooms of yesterday. We continually consider what might be “disruptive pedagogies” and we implement these into our courses for developing teachers – even if we are unsure of how precisely to do so. By “disruptive” we mean classroom-based skills and knowledge that will be game-changers in classrooms for teachers and students.

New curriculum, new technologies, innovative spaces, new policies – can all be game-changes for classroom teachers. One example was the introduction of interactive whiteboards in schools in mid-2000. A more current example is the movement towards mobile technology in learning or bring-your-own-device (BYOD) approaches. From a policy perspective, in Ontario, the recent “Renewed Mathematics Strategy” could also be considered a game-changer (Ontario Ministry of Education, 2016).

This past year, we introduced coding in all of the pre-service mathematics education courses in the primary/junior and junior/intermediate divisions at Wilfrid Laurier University. Our decision to do so was based on our view that coding was a “disruptive pedagogy” and thus essential knowledge for our teacher education candidates. We introduced coding despite having no knowledge of coding ourselves. When disruptive pedagogies emerge, the response from teacher educators can vary – in some cases, experts can be hired to meet the demand. In other instances, like classroom teachers, the faculty members must hunker down and learn because there are few “experts.” So, we “taught” or introduced coding this year, despite never having coded ourselves.

Screen Shot 2016-09-27 at 8.00.13 PMImage 1. Learning to code

In addition to reading scholarly articles, we relied heavily on resources on websites with prebuilt tutorials to get us started. Some of these are listed below. Admittedly, some of these online resources did not allow us to explore mathematics deeply while learning about coding. Developing a critical eye for useful materials is a process and takes some level of understanding and experience with the content and we understood this limitation in some of the choices we were making. We know colleagues and classroom teachers will find themselves in the same position and so our intent here is to share some things that we learned along the way that might be helpful.
1. Start small. Begin with one lesson and the build from there. You will begin to see connections in other parts of the course too. To begin with, start small.

2. Identify computational thinking in activities you are already doing in mathematics and in other subjects. Barr and Stephenson (2011), in their article, have an awesome table that illustrates cross-curricular connections. The article is available online through many sources. Also helpful are the distinctions Brenna and Resnick (2012) draw between CT concepts and CT practices. This table, developed from their work, gives examples of each that also helped guide our thinking and it gave us “look for” criteria when exploring mathematical tasks in which we were already engaging during our classes.

Screen Shot 2016-09-27 at 9.13.30 PM3. Step away from the computer. Unplugged activities do not require a computer. They are an amazing way to get started with computational thinking. Check out CS Unplugged (http://csunplugged.org/) for a host of ideas!

Screen Shot 2016-09-27 at 8.00.36 PMImage 2. Learning about sorting algorithms through an unplugged patterning activity

4. Online tutorials can be very helpful. There are plenty of these to choose from (e.g., https://scratch.mit.edu/, https://code.org/). The caution in using some of these resources is that they tend to be pretty prescriptive and, like any online resource, a critical lens is necessary. Additionally, it may be hard to find the mathematics underlying the tutorials. Tinkering with or debugging existing code is a useful way of learning how the programming language works. Matching code to its output is also pretty useful in connecting actions to outcomes when coding. The sites mentioned earlier provide great resources for this purpose.

Screen Shot 2016-09-27 at 8.00.53 PMImage 3. Matching code to output about geometric shapes using Scratch

5. You will not be able to code a game right from the start. We thought we could just jump into coding. We could not do this and you should not expect your students to do so either! Being able to write code is a fairly advanced skill and it is a common misconception that an individual can program games right from the start. Making the connections between the coding and the mathematics takes even more time.

6. Many students will “get it” faster than you will. Let them lead. Step back and see what they can do and what they can teach you. Be willing to be a co-code-learner.

7. Join a community of practice. Find like-minded people and connect. You can do that through twitter, through your own school boards, and other online coding groups. It was through finding like-minded people that we discovered the great mathematical coding extensions found at http://www.mathsurprise.com/stories/ . This resource connected us more deeply to the mathematical ideas intersecting with the coding.

8. Code. Code. Code. Get online and try it out. Try different languages. Try different apps or languages. We have tried Scratch (https://scratch.mit.edu/) and Tickle (https://tickleapp.com/) . There are lots of others. Find what works for you, your students, and your device.

References

Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community? ACM Inroads, 2(1), 48-54.

Brennan, K., & Resnick, M. (2012). New frameworks for studying and assessing the development of computational thinking. Paper presented at the American Educational Research Association, British Columbia, Canada.

British Columbia Government. (2016). $6 million to help connect students with coding, new curriculum and computers.   Retrieved August 11, 2016, from https://news.gov.bc.ca/releases/2016PREM0065-000994

Kotsopoulos, D., Floyd, L., Khan, S., Namukasa, I. K., Somanath, S., Weber, J., et al. (under review 2016). A pedagogical framework for computational thinking. Digital Experiences in Mathematics Education.

Mueller, J., Beckett, D., Hennessey, E., & Shodiev, H. (under review 2016). Assessing computational thinking across the curriculum. In C. Hodges & P. Rich (Eds.), Computational Thinking: Research and Practice (pp. xxx-xxx): AECT/Springer.

Ontario Ministry of Education. (2016). Renewed math strategy.   Retrieved September 26, 2016, from http://www.edu.gov.on.ca/eng/policyfunding/memos/april2016/min_math_strategy.html

Shodiev, H. (2013). Computational thinking and simulation in teaching science and mathematics. Paper presented at the Association for Computer Studies Educators Conference, Toronto, Canada.

SITRA. (2014). Future will be built by those who know how to code.   Retrieved June 29, 2015, from http://www.sitra.fi/en/artikkelit/well-being/future-will-be-built-those-who-know-how-code

Wing, J. M. (2006). Computational thinking and thinking about computing. Communications of the ACM., 49, 33-35.

Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of The Royal Society A, 366, 3717–3725.