Computer science with Python - Intermediate Level

Difficulty: ⭐️⭐️⭐️☆☆


Building upon our Python for beginners course, this course extends the concepts to more intermediate levels so that students can better use Python in computer science or software development, with deeper insight into the workings of the code.

Learning outcomes:

By the end of this course, students will:

  • Advanced programming skills with Python
  • In-depth understanding of Python code structures, such as for loops, objects, and recursive functions.
  • Knowledge on designing algorithms to solve computation tasks.
  • Ability to extend Python by using various libraries
  • Skills to optimize code for speed and clarity

Curriculum For This Course

      1. Binary Search algorithm implementation
      2. Quick Sort
      3. Binary search and Quick Sort by case studies
      1. What is a Class
      2. Introduction to OOP concepts: Encapsulation, Inheritance, Abstraction and Polymorphism
      3. Polymorphism
      4. OOP by case studies
      1. Singleton
      2. Adapter
      3. Composite
        1. What are the Robert C. Martin’s best principles
        2. Single responsibility principle
        3. Open/closed principle
        4. Liskov substitution principle
        5. Interface segregation principle
        6. Dependency inversion principle
      1. Binary Tree vs Red-Black Binary Tree
      2. Object Oriented Programming by case study
      1. Build a skeleton of online shop using OOP programming
      1. Dynamic programming by case study
      2. Coding review exercises
      1. Memoization
      2. The Coin Change Problem
      3. Fibonacci Modified
      1. ARP
      2. TCP/IP
      3. HTTP
      4. JavaScript Object Notation
      5. Building RESTful APIs

Build an online shop using OOP and web programming


Group name Start date Session duration Number of sessions Standard price


Below are the courses that you may want to take after this course:


Sara Metwalli

Sara Metwalli

Computer Science, Game Development Tutor

Android mobile application development

Teaching Assistant in science for undergraduate level.

Master degree in Communications and Electronics Engineering.

Working with Tokyo Institute of Technology Online Education Development Office (OEDO) on designing and analyzing content for edX.

Currently Enrolled as a PhD researcher in the field of Information and Communications Engineering at Tokyo Institute of Technology.