This course follows on from Programming Theory in Practice 1, and deals with topics such as Object Orientation, Database Access, and Design principles. This course is not for the pure beginner, and is at a more intermediate level. Before continuity with the course, please read through the Prerequisites for the course. The goal of this course is to improve your knowledge of programming theory, have a good theoretical understanding of Object Orientation, Design Principles, and the skill to apply this knowledge practically in solving problems programmatically.

Course Content

Module 1: Object Orientation

  1. Introduction to OOP
  2. Designing Classes
  3. Classes and Objects in Python
  4. Inheritance
  5. Polymorphism
  6. Abstraction
  7. Interfaces
  8. Composition

Module 2: Design Principals

  1. Introduction to Design Principals
  2. Problem Solving and Design with UML
  3. Loose Coupling, Strong Cohesion
  4. SOLID Principles

Module 3: Databases

  1. Introduction to Databases
  2. Basic Administrative Operations
  5. Programming with Databases

Module 4: Design Patterns

  1. Introduction to Design Patterns
  2. Creational Design Patterns
  3. Structural Design Patterns
  4. Behavioural Design Patterns

Now What?

  1. Challenges
  2. Recommended Reading
  3. Course Badges


The assessment for this course will be done using Open Badges. To read more about this, please see the section on the Course Badges. Each of the four core course modules have a badge that can be earned for completion of the specific module.

For those who complete the entire course, they can apply for the course completion badge.

Programming Theory Level 2 badge

Programming Theory Level 2 badge

Let's get going

Click here to Read the Prerequisites to being with.