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. I'm considering either focusing heavily on Java or learning C so I can understand concepts that higher-level languages hide, such as pointers, memory layout, and manual memory management. I'm also interested in cybersecurity and want to become broadly well-versed. Which path would improve my programming knowledge more, and how should I approach getting better at DSA?
3 Answers
You can become an excellent programmer in one language, so there’s no need to switch immediately. Since you already know Java and Python, use one of them to write real software and implement data structures yourself. Learn C afterward if you want a clearer view of what happens underneath: pointers, memory management, data representation, and how abstractions are implemented. Move to another language when it helps you explore something your current one doesn’t teach as well.
Make DSA the main focus rather than assuming a new language will solve the problem. You can practice algorithms in Java or Python, and building small useful projects is often the best way to stay motivated when things get difficult. If you don’t have a project idea, platforms with algorithm challenges can still provide good practice, as long as you focus on understanding the solutions instead of just collecting solved problems.
C can be a worthwhile side project if you enjoy understanding the lower-level details. Implementing linked lists, trees, hash tables, and other structures in C forces you to deal with pointers and memory layout instead of relying on the JVM or built-in containers. It probably isn’t the most practical language for every project, but it can make the abstractions in Java and Python easier to understand.
Exactly. C is useful for learning how things work, but you don’t need to use it for all your everyday coding. Treat it as a focused way to explore memory, systems, and implementation details.

That makes sense. I already have a decent foundation in Python and Java, so I’ll focus on building projects and strengthening DSA before adding another language just for the sake of it.