This initial phase is crucial. It's like building the foundation of a house; skipping it will lead to instability later on.
-
- Data Types
- Variables
- Operators
- Conditional Statements (if, switch)
- Looping Constructs (for, while)
- Functions
- Structs
-
- Inheritance
- Encapsulation
- Abstraction
- Polymorphism
-
- Array, Dynamic Array
- Linked List
- Stack
- Queue
-
- Tree (specifically Binary Search Tree)
- Dictionary (Set, Hash Table)
- Graph
-
- Binary Search
- Linear Search
-
- Bubble Sort
- Quick Sort
- Merge Sort
-
- BFS (Breadth-First Search)
- DFS (Depth-First Search)
-
- Backtracking and Recursion
- Greedy Algorithms
- Dynamic Programming
- Easy: 50–100 problems
- Medium: 15–40 problems
- Build a small project to apply what you've learned (e.g., a management system for a pharmacy, HR, or school, or games like Snake and Pong).
This entire phase should take approximately 6–12 months to complete thoroughly.
These subjects can be studied in parallel and don't always require immediate practical application. For guidance, check university course maps, such as the CS Course Map Guides from UC Berkeley.
- Operating Systems
- Databases
- Networking
- Software Engineering (e.g., Agile methodologies)
Focus on understanding the core principles of your chosen specialization (e.g., web, mobile, game development). Crash courses are a great way to get an introduction to a domain.
Choose specific technologies within your domain (e.g., .NET, Flutter, Node.js). This choice should be based on your domain's fundamentals and personal interest, not just on current popularity.
- Build a strong portfolio to showcase your work.
- Focus on gaining practical experience through internships and personal projects.
- Prepare for interviews by practicing and demonstrating your practical understanding.
- Remember that continuous learning is essential in the tech field.
- Your passion and a strong foundation are more critical than chasing trends.
- Refer to this video for more guidance: Career Options
- Perfect Path: Study all four foundational levels for a robust and adaptable career. This is the ideal approach for long-term success.
- Quick Path: Focus on the first foundational level and then jump to a specific technology/domain. It is crucial to return to the second and third levels after securing a job to build a stronger career foundation.
- How to Start Programming in the Age of AI by Mohamed Moshrif: Part 2
- Mohamed Moshrif: LinkedIn Profile