Learning Outcomes:
On successful completion of this module the learner will:
1. Be able to explain the core concepts in OOP as implemented in Python (classes, instances, inheritance, multiple inheritance, encapsulation, polymorphism and methods).
2. Be able to construct software systems that incorporate these concepts.
3. Be able to assemble code in a Python Notebook.
4. Be able to analyse OO programs to find errors.