Python Programming Challenges and open book assessments

Given that it is Computer Science in Education week and the last few weeks of term I wanted to wrap up my practical programming lessons for the term with some Python programming challenges.

Why programming challenges?

In the past I’ve used these successfully with lower age groups. In my opinion it helps to validate the work all students have completed during the term, gives every student an idea of where they should be competence wise, but also allows me to stretch some of those more comfortable with the Python language.

My students will be sitting CIE 9608 Computer Science exams in May/June where their ability to create or understand pseudocode or actual code will be very important. I don’t want to concentrate purely on their ability to regurgitate past paper answers and internal assessment don’t need to closely follow what is to come in the final exam (although I do have three elements to my internal assesssments and one of these is structured around the theory exams), so I’ve made this section entirely practical and open book.

Why let the students use their notes during challenges and assessments?

It’s all about building confidence. If I see a student completing a challenge and staring at a blank screen I can intervene and support them. If I see a student staring at a blank space where their program code should be during an exam I will have failed them as a teacher. Letting students use a computer also opens up the opportunity to use the Internet to help them research their response.

As well as building confidene I want them to be under a little bit of time pressure, allowing them to decide on the strategy for completing the problem. I’ve made the challenge too difficult to Google but broken down into steps so that they can identify practice programs which might help them come up with a solution.

I also make it clear there is no single correct solution and this matches the life of a software developer in the real world. So far student have come up with amazingly diverse ways of solving the same challenge.

What about administration of these challenges?

Collecting and providing feedback on these challenges is pretty easy now they are all set up with GitHub accounts. Students have become adept at pushing code to their repositories and I was amazed at how confident they were using it this week compared to just over two months ago.

I’ve attached my most recent challenge. Have a go or share it with your class… and let me know if you upload your solution to GitHub…