A structured learning system — not just a collection of files.
This repository is a structured roadmap to learn C++ from beginner level to a solid understanding of programming and data structures.
The goal is simple:
- learn concepts
- apply them
- build real systems
- develop problem solving skills
flowchart LR
A[Basics] --> B[OOP]
B --> C[Data Structures]
flowchart LR
A[Notes] --> B[Tasks]
B --> C[Projects]
C --> D[Problems]
D --> E[Exam]
Each level follows the same sequence. Do not skip steps.
| Level | Module | Link |
|---|---|---|
| 1 | Basics | 01-Basics/ |
| 2 | Object-Oriented Programming | 02-OOP/ |
| 3 | Data Structures | 03-Data-Structures/ |
Start here:
You will learn:
- variables and types
- conditions
- loops
- arrays
- functions
- input/output
- strings
- pointers
- references
- type casting
- enums and structs
You will learn:
- classes and objects
- encapsulation
- inheritance
- polymorphism
- abstraction
- constructors
- destructors
- static members
- operator overloading
You will learn:
- arrays (advanced techniques)
- linked lists (singly, doubly, circular)
- stack and queue (array & linked implementation)
- deque (double-ended queue)
You will also:
- analyze time and space complexity
- choose the right data structure for each problem
- build efficient and scalable solutions
If you are starting from zero, follow this order:
Then move to:
cpp-roadmap/
|
├── 01-Basics/
│ ├── notes/
│ │ ├── 01-variables.md
│ │ ├── 02-if-else.md
│ │ ├── 03-loops.md
│ │ ├── 04-arrays.md
│ │ ├── 05-functions.md
│ │ ├── 06-input-output.md
│ │ ├── 07-strings.md
│ │ ├── 08-pointers.md
│ │ ├── 09-references.md
│ │ ├── 10-type-casting.md
│ │ └── 11-enums-structs.md
│ │
│ ├── tasks/
│ │ ├── task1-variables.md
│ │ ├── task2-if.md
│ │ ├── task3-loops.md
│ │ ├── task4-arrays.md
│ │ ├── task5-functions.md
│ │ ├── task6-io.md
│ │ ├── task7-strings.md
│ │ ├── task8-pointers.md
│ │ ├── task9-references.md
│ │ ├── task10-casting.md
│ │ └── task11-enums-structs.md
│ │
│ ├── projects/
│ │ ├── calculator/
│ │ ├── guessing-game/
│ │ ├── login-system/
│ │ └── binary-to-decimal/
│ │
│ ├── problems/
│ │ ├── easy.md
│ │ └── medium.md
│ │
│ └── exam.md
│
├── 02-OOP/
│ ├── notes/
│ │ ├── 01-classes.md
│ │ ├── 02-encapsulation.md
│ │ ├── 03-inheritance.md
│ │ ├── 04-polymorphism.md
│ │ ├── 05-abstraction.md
│ │ ├── 06-constructors.md
│ │ ├── 07-destructors.md
│ │ ├── 08-static.md
│ │ └── 09-operator-overloading.md
│ │
│ ├── tasks/
│ │ ├── task1-classes.md
│ │ ├── task2-encapsulation.md
│ │ ├── task3-inheritance.md
│ │ ├── task4-polymorphism.md
│ │ ├── task5-abstraction.md
│ │ ├── task6-constructors.md
│ │ ├── task7-destructors.md
│ │ ├── task8-static.md
│ │ └── task9-operator-overloading.md
│ │
│ ├── projects/
│ │ ├── student-system/
│ │ └── bank-system/
│ │
│ ├── problems/
│ │ ├── easy.md
│ │ └── medium.md
│ │
│ └── exam.md
│
├── 03-Data-Structures/
│ ├── notes/
│ │ ├── 01-arrays.md
│ │ ├── 02-linked-list.md
│ │ ├── 03-stack.md
│ │ ├── 04-queue.md
│ │ └── 05-deque.md
│ │
│ ├── tasks/
│ │ ├── task1-arrays.md
│ │ ├── task2-linked-list.md
│ │ ├── task3-stack.md
│ │ ├── task4-queue.md
│ │ └── task5-deque.md
│ │
│ ├── projects/
│ │ ├── array-toolkit/
│ │ ├── linked-list-manager/
│ │ ├── stack-implementation/
│ │ └── queue-system/
│ │
│ ├── problems/
│ │ ├── easy.md
│ │ ├── medium.md
│ │ └── hard.md
│ │
│ └── exam.md
│
├── LICENSE
├── .gitignore
└── README.md
Start directly:
01-Basics/notes/01-variables.md
- Do not skip steps
- Do not copy without understanding
- Practice daily
- Focus on logic
Created by Mohamed Kotb
This repository is designed as a structured path for serious learners.