I have a solid foundation in Python and Java, including basic object-oriented programming, and I understand the general logic behind data structures and algorithms. I want to become skilled enough to genuinely enjoy coding in my free time while also performing better on assignments. Since I'm considering cybersecurity in the future, I'm wondering whether I should focus on becoming much stronger in Java or learn C to better understand pointers, memory, and what higher-level languages abstract away. My main weakness is applying and understanding DSA, so which path would strengthen my overall knowledge more?
3 Answers
C can be a worthwhile challenge because it forces you to deal with pointers and memory instead of relying on the JVM to manage everything. Working through a linked list, hash table, or tree in C can make the underlying mechanics much clearer. It may feel more tedious, though, and you probably won’t want to use it for every project. Treat it as a useful side quest for understanding systems and cybersecurity, while continuing to build practical projects in Java or Python.
Focus on practicing DSA rather than switching languages just for the sake of it. You can implement and study algorithms in Java or Python, and solving problems regularly will improve your understanding. Building a small project you actually care about is often the best motivation, but coding challenge sites can also be useful when you don’t have a project idea. Start with arrays, linked lists, stacks, queues, trees, graphs, sorting, searching, and complexity analysis, then apply them in real programs.
You can become an excellent programmer in one language, so there’s no urgent need to add another. Since you already know Java and Python, use one of them to write real software and study computer science concepts. Learn C when you specifically want to understand memory layout, pointers, manual allocation, and the lower-level behavior hidden by languages such as Java. That knowledge is especially useful for cybersecurity, but it works best as a focused side path rather than a replacement for building projects and practicing DSA.
That makes sense. I already understand the basic concepts, so I’ll probably keep using Java or Python for DSA practice and learn C separately to fill in the lower-level gaps.

The important part is not just writing the same DSA exercises in C. Pay attention to how the data is laid out in memory and why each pointer operation works; otherwise the language switch won’t teach you much beyond extra syntax.