I'm a beginner programmer with only shallow experience in C, and I don't feel confident with programming yet. I'm planning to complete CS50x first so I can build stronger fundamentals instead of jumping directly into data structures and algorithms.
My rough plan is CS50x → C++ fundamentals and STL → DSA → problem solving and LeetCode, but I'm unsure whether that order makes sense. How much C++ should I learn before starting DSA, and which beginner-friendly DSA resources would you recommend? Is Striver's A2Z DSA course a good option, or are there better alternatives?
I'd also like advice on the best topic order, when to begin LeetCode, how to balance learning concepts with solving problems, and what number of problems per week is realistic for a beginner. If you could restart from my current position, what would your six- to twelve-month roadmap look like? I'm focused on genuinely improving my programming and problem-solving skills rather than following a rushed "learn everything in 30 days" plan or simply collecting solved problems.
2 Answers
CS50x is a solid starting point because it can fill in gaps in C while teaching you how to think about problems, not just memorize syntax. It may also introduce some basic data structures and algorithms, so you probably won’t be starting DSA from zero afterward. A structured course is useful because it gives you a sensible progression without requiring you to plan every detail in advance.
After CS50x, learn enough C++ to comfortably write functions, use references and pointers at a basic level, work with classes, and use the STL containers and algorithms. You don’t need to master every part of the language before beginning DSA. OpenDSA is one possible resource, and the course you mentioned may work just as well. Start with arrays and strings, then move through linked lists, stacks and queues, recursion, trees, heaps, hash tables, graphs, sorting, searching, and basic dynamic programming. Begin solving small problems as soon as you learn each topic instead of postponing practice until the entire syllabus is complete.
LeetCode can be useful, but it shouldn’t be treated as the definition of being a good programmer. It mainly teaches you to recognize and solve a particular style of interview problem, which isn’t the same as building software or understanding programming broadly.
Alongside DSA, make projects you actually care about. A project gives you a reason to research unfamiliar concepts, debug real issues, read documentation, and make design decisions. Those skills are often more transferable than memorizing algorithms. For practice, focus on understanding each solution and reviewing mistakes rather than chasing a large daily number. A few thoughtful problems each week is perfectly reasonable at first; consistency and reflection matter more than speed.

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically