1. Introduction
    1. introduction about automation
      1. What is the automation testing?
      2. Advantage or benefit of automation testing
      3. Disadvantages of automation Testing
    2. OOP Introduction
      1. What is OOP
        1. OOP means Object Oriented Programming
        2. OOP concepts are intended to improve code readability , reusability and maintainability by defining how to structure your program efficiently.
      2. What is Java
        1. Java is a class-based object-oriented programming (OOP) language built around the concept of objects.
      3. The main principles of OOP
        1. 1. Class\Object
          1. Definition
          2. its like packages of functions and parameters(attributes) which reusable on many places
          3. Example
          4. Constructor
          5. A constructor in Java is a special method that is used to initialize objects. The constructor is called when an object of a class is created.
          6. Its look like connection panel between classes should i call you on Vodafone or etisalat
          7. Example
          8. more examples on inteliJ + Methods overloading
          9. Modifiers
          10. Is keywords which used to define the scope of my class \ method and attributes
          11. On W3Schools
          12. https://www.w3schools.com/java/java_modifiers.asp
        2. 2. Abstraction
          1. Definition
          2. Data abstraction is the process of hiding certain details and showing only essential information to the user. Abstraction can be achieved with either abstract classes or interfaces
          3. Abstract class
          4. it is a restricted class that cannot be used to create objects (to access it, it must be inherited from another class).
          5. Abstract method
          6. can only be used in an abstract class, and it does not have a body. The body is provided by the subclass (inherited from).
          7. Example
        3. 3. Encapsulation
          1. Definition
          2. Encapsulation helps with data security (hiding), allowing you to protect the data stored in a class from system-wide access.
          3. Example
        4. 4. Inheritance
          1. Definition
          2. Inheritance makes it possible to create a child class that inherits the fields and methods of the parent class.
          3. The child class can override the values and methods of the parent class, but it’s not necessary.
          4. It can also add new data and functionality to its parent.
          5. Parent classes are also called super classes or base classes, while child classes are known as subclasses or derived classes as well. Java uses the extends keyword to implement the principle of inheritance in code.
          6. Example
        5. 5. Polymorphism
          1. Definition
          2. Polymorphism refers to the ability to perform a certain action in different ways. In Java, polymorphism can take two forms: method overloading and method overriding.
          3. Example
    3. Prepare Enviroments
      1. Needed apps
        1. Jdk
        2. NodeJS
        3. InteliJ
  2. OOP and Java
    1. session 2
      1. Create Class , Object (call class)
        1. Declare Variable and Create Methods
          1. Conditions (if - switch case) and loops (while, for, do while)
          2. Task
    2. session 3
      1. Access and non-access modifiers
        1. Interfaces and Inheritance
          1. Collections and Exceptions
          2. Task
  3. Selenium
    1. session 4
      1. Selenium introduction & automation basics
        1. Selenium libraries and dependences
          1. Driver starts and close
          2. Element locator
          3. Identify Element By Id,ClassName , Xpath , Text , LinkText , CSsSelector .....
          4. task
    2. session 5
      1. Handle mouse movements and keyboard events
        1. Verification commands ( gettext , get... , isenabled ,isselected .....)
          1. Switch between tabs and pages
          2. Switch alerts
          3. task
    3. session 6
      1. Operate Calender
        1. Synchronization commands (Thread sleep , waits (implicit ,excplicit)
          1. Exam about all
  4. Framework
    1. session 7
      1. Capabilities (Base)
        1. POM
          1. task
    2. session 8
      1. Testng ( Tags , Assert , XML , Reports)
        1. Frameworks Types
          1. Data Driven and Json
          2. task
    3. session 9
      1. centralized functions
        1. Scroll \ Json reader
          1. Review
          2. Task
    4. session 10
      1. build a project from scratch
  5. Topics
    1. Algorithm
      1. https://youtube.com/playlist?list=PLwCMLs3sjOY6KH-8c9F-lMWn-r02hyoV_
    2. Data-Structure
      1. https://youtube.com/playlist?list=PLoK2Lr1miEm-5zCzKE8siQezj9rvQlnca
    3. Design pattern
      1. https://www.youtube.com/playlist?list=PLd-dOEgzBpGnt3GuEszo_piQq52XSqAmj
  6. Sessions
    1. IDE IntelJ
      1. https://testautomationu.applitools.com/intellij/
    2. OOP and Java
      1. https://testautomationu.applitools.com/java-programming-course/
        1. https://www.w3schools.com/java/
    3. Selenium Java
      1. https://testautomationu.applitools.com/selenium-webdriver-tutorial-java/
    4. Testng
      1. https://testautomationu.applitools.com/introduction-to-testng/