From 2018, most teachers across Australian will be required to report against the Australian Curriculum: Digital Technologies. There are many resources available on the Internet to help teachers, but when it comes to Object-Oriented programming, there are few accessible examples that dive into fundamental concepts such as inheritance, encapsulation and polymorphism. Considering the lack of experience and confidence in some teachers, particularly in regional areas or where forma training in computer science is minimal, it’s no surprise there is some trepidation about how effectively schools will deliver on the promises of the curriculum.
If we want students to properly understand the key ideas of the paradigm, it is imperative we provide relevant and meaningful activities for students to engage with. Since I began my teaching career in 2005, I’ve tried a number of different approaches with students in years 9-12 to introduce OO concepts, with my most recent successes realised through a simple game inventory system.
In this talk I’ll demonstrate the approach we’ve used, and how we ensure students grasp the fundamental concepts of the OO paradigm. I will explain how students are able to explore these ideas further through their own investigations, and share the assessment task I’ve used to evaluate student understanding. I’ll also showcase some student work, and point to a couple of useful online resources that have been effective in a primarily student-driven environment.
Python is an ideal language for this not only due to its ease of syntax and readability, but because students who have been using it as a scripting language and written simple functions already understand most of the language structures needed to implement objects. This allows the focus to be on conceptual understanding, not the specifics of the language. The breadth of adoption of Python in different domains such as web development and data analysis also means that students can use this knowledge in a variety of contexts, such as allowing them to implement dynamic websites using an MVC architecture.