Thursday, 8 March 2018

Vote-counting Programs

The Election task has been completed, and four students opted to try the programming question. To recap, these were the instructions:

5. Write a program in Scratch to calculate the outcome of an election from the preferences of voters, by the plurality method. Then try to use the Borda count method (see below). Run your program many times, comparing the fairness of the results by the two systems. Extension: try to add the elimination method into your program.

I provided a starter program which casts random votes and puts them into a list.

https://scratch.mit.edu/projects/197219936/

The students had to write a script to parse the list and add up the votes. This involves creating and incrementing variables, followed by some if-else logic, and was achieved by all. Applying the Borda count method is quite a bit more difficult, and students asked me for help. I had to teach a double-loop algorithm, whereby elements of a list are looped over while the list itself is looped through. Following this, Borda count was successfully achieved.

One student who was absent came back with a working program written with Dad, which was nice to see! Another student hadn't realised there was a starter program, and wrote everything from scratch, and very well, too! The programs are below:

Reflection

This task was quite challenging, but was well-received by students, and I was impressed by their interest and perseverance. While writing a model answer, I noticed that the elimination method is much harder to implement, and I will drop this from a future version.

It occurred to me that this would also be a good spreadsheet task, and next time I might offer that as an alternative among the optional questions. It is of concern to me that students coming up to IB diploma Chemistry don't have much experience of using spreadsheets since we switched to MYP Design, with most of it taught by English and Art teachers.

Thursday, 11 January 2018

Performance Goals 2018

Two SMART goals based on a specific standard and connected to an ATL skill, and separated into impact on learning and impact on practice. At least one based on Inquiry Reflection.

Goal 1 C3.13. Teaching and learning engages students in reflecting on how, what and why they are learning.

Students in grades 6 and 7 Mathematics will write a guided reflection at the end of each unit. My task is to prepare the guidance and give feedback on student reflections. Guidelines and student reflections will provide evidence of completion of this goal.

Goal 2 C2.Introduction of Computer Programming to the Mathematics curriculum.

Each unit in grades 6 and 7 Mathematics will include examples of the application of computer programs to solve mathematical problems, and provide opportunities for students to learn how to program. Task descriptions, programs written for teaching, and student responses will provide evidence for the completion of this goal.

Scratch Programming in Mathematics

This year I have been experimenting with introducing programming to Mathematics classes, especially for Grade 6, who do not have programming in Design (nor did they in primary school). These are the tasks I have introduced so far, and some of the student responses.

Prime Number Checker

This is a starter program I explained in class, and set as a task to finish for homework: https://scratch.mit.edu/projects/184630994/#editor

Simple prime number tester.
Can you improve the algorithm, to make it more efficient?
Can you change the program so you don't have to keep clicking the green flag?
Can you make sure it doesn't add a prime to the list more than once?
How many prime numbers can you find between 100 and 1000?

This was successfully completed by two thirds of the class.

Leap Years

This was an optional question I added in to the existing assessment task here: https://docs.google.com/document/d/1D5s6gSlFkxGgB413xvYVIJrNUwS1TT4dcz8wUQLn2Mg/edit?usp=sharing

a. Write a program in Scratch to test whether a given year is a leap year or not.
b. Extend your program so that it will find all the leap years from 1900 to 2020. Check that it is working correctly.
c. Use your program to find interesting facts, (such as the final leap year of the millennium, or how many leap years there have been since the Gregorian calendar started. Use your imagination)

Three students opted to try this task. One didn't solve it, one had an incorrect implementation of the algorithm (the tricky 400, but not 100 rule), but the third student has the algorithm correct and concisely programmed, plus some nice useability scripting: https://scratch.mit.edu/projects/189135859/#editor

Electoral Systems

Again this is an addition to an existing assessment task, and one of the optional questions, here: https://docs.google.com/document/d/1q2MVJaBsYWIfeg6h7b81GoFw-FwOAFZpDLx1ByeBwHo/edit?usp=sharing

5. Write a program in Scratch to calculate the outcome of an election from the preferences of voters, by both the elimination method and the plurality method. Run your program many times, comparing the fairness of the results by the two systems. Extension: find out about the Borda count method, and add this into your program.

Students were provided with a starter program which creates random sets of voter preferences: https://scratch.mit.edu/projects/197219936/#editor

Reflection

The tasks have been well-received by students, and motivating for high-achievers. However, students who are less strong in mathematics find it difficult to implement the algorithm, or to break down the problem in a way that can be implemented with Scratch blocks. This isn't surprising, as programming involves high order thinking. The election task is coming up soon, so lets see how it goes.