23 answers
Updated
1804 views
What should I do after learning OOP in my programming studies?
I'm studying programming at university, but the university is very slow, and I want to know what I should learn after OOP in C++ and Java.?
Login to comment
23 answers
Updated
Teklemuz Ayenew’s Answer
Boost your core computer science skills by getting comfortable with Git/GitHub and SQL. Dive into data structures and algorithms like arrays, linked lists, stacks, queues, trees, graphs, recursion, sorting, and searching. Use these skills in projects and open-source work on GitHub. Learn software design patterns and SOLID principles, and get a grip on system design basics such as APIs, databases, and application architecture. Build your engineering skills in debugging, writing clean code, testing, REST APIs, authentication, and backend development.
Keep practicing problem-solving on platforms like HackerRank, GeeksforGeeks, LeetCode, Exercism, and Codewars. Improve your teamwork and collaboration by joining programming clubs, student tech communities, volunteering, and participating in hackathons for real-world project experience. Learn how to deploy and host projects so your applications can go live. Explore different areas early on to find your strengths and interests, and refine them through projects and experience. Gradually focus on a specialization like backend, frontend, mobile development, or cloud computing while keeping a strong general foundation.
Keep practicing problem-solving on platforms like HackerRank, GeeksforGeeks, LeetCode, Exercism, and Codewars. Improve your teamwork and collaboration by joining programming clubs, student tech communities, volunteering, and participating in hackathons for real-world project experience. Learn how to deploy and host projects so your applications can go live. Explore different areas early on to find your strengths and interests, and refine them through projects and experience. Gradually focus on a specialization like backend, frontend, mobile development, or cloud computing while keeping a strong general foundation.
Updated
Vidhya’s Answer
After mastering Object-Oriented Programming, you're well on your way to becoming a true developer. Here are some exciting next steps to take: 1. Dive into Data Structures & Algorithms 2. Create real projects with OOP 3. Get familiar with software engineering tools 4. Discover a specialization that interests you 5. Keep practicing problem-solving skills. You're on a great path!
Updated
Claiton’s Answer
Learning Data Structures and Algorithms will boost your problem-solving skills. Understanding Design Patterns and solid principles can help you write clean and professional code. It's also beneficial to get familiar with tools like Git and GitHub for managing your code. Additionally, exploring automated Unit Testing frameworks will enhance your coding. For real-world projects, consider diving into Spring Boot.
Updated
Neha’s Answer
Hello! You don't have to wait for university courses. Start working on projects and learning important skills by yourself. Focus on data structures, algorithms, databases, version control like Git, and a modern technology stack that interests you. The quickest way to get better is by creating real projects.
Updated
Kevin’s Answer
Hi اركان,
It's awesome that you're eager to learn ahead of your university classes. After getting comfortable with OOP in C++ and Java, the next step is to dive into data structures and algorithms. These topics are key for improving your problem-solving skills and writing efficient code. Start with arrays, linked lists, stacks, queues, trees, graphs, sorting, and searching.
Also, try to pick up Git/GitHub and some basic SQL. Working on small projects can make your learning more practical and fun. These skills help you apply what you learn beyond just theory.
For resources, YouTube, freeCodeCamp, and Udemy are great places to start. AI tools can also be helpful for explaining code and breaking down tough topics, but use them as a learning aid rather than a shortcut to ensure you build strong problem-solving skills.
In short, after OOP, focus on data structures, algorithms, Git/GitHub, SQL, and small projects. Your proactive approach to learning is fantastic and will definitely help you improve over time.
It's awesome that you're eager to learn ahead of your university classes. After getting comfortable with OOP in C++ and Java, the next step is to dive into data structures and algorithms. These topics are key for improving your problem-solving skills and writing efficient code. Start with arrays, linked lists, stacks, queues, trees, graphs, sorting, and searching.
Also, try to pick up Git/GitHub and some basic SQL. Working on small projects can make your learning more practical and fun. These skills help you apply what you learn beyond just theory.
For resources, YouTube, freeCodeCamp, and Udemy are great places to start. AI tools can also be helpful for explaining code and breaking down tough topics, but use them as a learning aid rather than a shortcut to ensure you build strong problem-solving skills.
In short, after OOP, focus on data structures, algorithms, Git/GitHub, SQL, and small projects. Your proactive approach to learning is fantastic and will definitely help you improve over time.
Updated
Jacob’s Answer
Hey there!
I'm glad you have a passion for Computer Science — having a solid grasp of OOP is a genuinely important building block, and the fact that you're pushing ahead of your university's pace is a great sign.
Since you've got OOP down in both C++ and Java, here's a roadmap of what I'd prioritize next:
1. Data Structures & Algorithms (DSA)
If your university hasn't covered this deeply yet, this is your most urgent next step. Understanding how to choose the right data structure (trees, graphs, hash maps, heaps) and write efficient algorithms is the foundation of almost everything else — and it's what technical interviews at top companies will test you on.
2. Systems Design & Scalable Architecture
When I look back on my undergrad, this was the largest gap in my coursework, and it's one of the biggest differentiators in the real world. Start learning how a full suite of software components — databases, APIs, caches, queues — work together to accomplish a goal. Resources like Designing Data-Intensive Applications by Martin Kleppmann are excellent for this.
3. Design Patterns
Since you know OOP, the natural next step is learning the classic patterns (Factory, Singleton, Observer, Strategy, etc.). These are the vocabulary of professional software engineering and will make you a much stronger collaborator on any team.
4. Databases
Learn both relational (SQL — PostgreSQL or MySQL) and non-relational (NoSQL — MongoDB or Redis) databases. Understanding how to model, query, and optimize data is unavoidable in virtually every software role.
5. Version Control & Collaborative Development
If you haven't already, get very comfortable with Git and GitHub. Learn branching strategies, pull requests, and code review workflows. This is the air engineers breathe on any professional team.
6. Build Something Real
All of the above sticks far better when applied to a real project. Pick something you genuinely care about — a web app, a game, a tool — and build it. Push it to GitHub. This also becomes your portfolio, which matters enormously when you're job hunting.
The fact that you're thinking this proactively puts you ahead of most of your peers. Keep that momentum going — the engineers who stand out aren't always the ones who learned the most in class, but the ones who kept learning outside of it.
Good luck!
I'm glad you have a passion for Computer Science — having a solid grasp of OOP is a genuinely important building block, and the fact that you're pushing ahead of your university's pace is a great sign.
Since you've got OOP down in both C++ and Java, here's a roadmap of what I'd prioritize next:
1. Data Structures & Algorithms (DSA)
If your university hasn't covered this deeply yet, this is your most urgent next step. Understanding how to choose the right data structure (trees, graphs, hash maps, heaps) and write efficient algorithms is the foundation of almost everything else — and it's what technical interviews at top companies will test you on.
2. Systems Design & Scalable Architecture
When I look back on my undergrad, this was the largest gap in my coursework, and it's one of the biggest differentiators in the real world. Start learning how a full suite of software components — databases, APIs, caches, queues — work together to accomplish a goal. Resources like Designing Data-Intensive Applications by Martin Kleppmann are excellent for this.
3. Design Patterns
Since you know OOP, the natural next step is learning the classic patterns (Factory, Singleton, Observer, Strategy, etc.). These are the vocabulary of professional software engineering and will make you a much stronger collaborator on any team.
4. Databases
Learn both relational (SQL — PostgreSQL or MySQL) and non-relational (NoSQL — MongoDB or Redis) databases. Understanding how to model, query, and optimize data is unavoidable in virtually every software role.
5. Version Control & Collaborative Development
If you haven't already, get very comfortable with Git and GitHub. Learn branching strategies, pull requests, and code review workflows. This is the air engineers breathe on any professional team.
6. Build Something Real
All of the above sticks far better when applied to a real project. Pick something you genuinely care about — a web app, a game, a tool — and build it. Push it to GitHub. This also becomes your portfolio, which matters enormously when you're job hunting.
The fact that you're thinking this proactively puts you ahead of most of your peers. Keep that momentum going — the engineers who stand out aren't always the ones who learned the most in class, but the ones who kept learning outside of it.
Good luck!
Updated
Olga’s Answer
You can get familiar with Software Design Patterns. They are useful in building more complex systems. The classical book about it is Design Patterns: Elements of Reusable Object-Oriented Software (Gang of four).
Updated
Brian’s Answer
My favorite lessons were about learning different algorithms and understanding their performance and CPU costs. These lessons inspired me to pursue a career in programming. As you learn different programming languages, also focus on integrating database platforms and cloud APIs to improve your skills in creating valuable solutions. Joining a programming club in college was beneficial for me, as it helped improve my problem-solving skills and coding speed through competitive training. With the rise of AI, it's crucial to learn how to use AI not only for writing code but also for applying it in real-world applications and use cases.
Updated
Sunil’s Answer
Hello! Understanding OOPS is a key step that can really boost your growth in software engineering. Learning JAVA and exploring the latest in cloud computing can strengthen your future and open up many exciting opportunities. Keep going, and you'll do great!
Updated
Kaustubh’s Answer
Once you finished c++ and Java, you kind of understand how the backend of any software works, next step would be to complete this side of the software by learning data storage, learn Postgres sql which is very beginner friendly. After that learn front end side of the software, start with JavaScript, followed by any FE framework like angular or react. Once you finished all this, pick any cloud (azure/google/aws) and finish the fundamentals. This alone will put you at par with most of the software engineers in the field today.
Updated
Yamuna’s Answer
That's a great question, and it's fantastic that you're thinking beyond your university courses and taking charge of your learning. After getting a handle on OOP in C++ and Java, it's a good idea to dive into important areas like data structures, algorithms, Git and GitHub, databases, SQL, and basic software design principles.
As you learn these, try creating small projects to apply your knowledge and boost your confidence. You can also explore what interests you most, whether it's web development, mobile apps, systems programming, or cloud technologies. While university might feel slow at times, your personal growth doesn't have to be.
Stay curious, keep practicing, and continue building on your own. Over time, you'll develop strong skills and set yourself up well for the future. You've got this!
As you learn these, try creating small projects to apply your knowledge and boost your confidence. You can also explore what interests you most, whether it's web development, mobile apps, systems programming, or cloud technologies. While university might feel slow at times, your personal growth doesn't have to be.
Stay curious, keep practicing, and continue building on your own. Over time, you'll develop strong skills and set yourself up well for the future. You've got this!
Updated
Sandeep’s Answer
Hello
After learning OOP in C++ and Java, the next step is to learn Data Structures and Algorithms. Understanding arrays, linked lists, stacks, queues, trees, graphs, and sorting algorithms will greatly improve your problem solving skills.
At the same time, start building small projects and learn tools like Git and GitHub. This combination of DSA and practical projects will prepare you well for internships and future software engineering roles.
After learning OOP in C++ and Java, the next step is to learn Data Structures and Algorithms. Understanding arrays, linked lists, stacks, queues, trees, graphs, and sorting algorithms will greatly improve your problem solving skills.
At the same time, start building small projects and learn tools like Git and GitHub. This combination of DSA and practical projects will prepare you well for internships and future software engineering roles.
Updated
Anuradha’s Answer
It's great that you're starting to learn coding! To truly excel, it's important to focus on writing clean and organized code. This means learning how to structure your code well and choosing good names for classes and variables, so your code stays neat and easy to understand.
Reading "Clean Code" by AI tools and watching coding videos on YouTube can be really helpful. Spend time not just on writing code, but also on thinking about how to design it well. This will help you adapt to changes and become skilled in design techniques. Learning about design patterns and principles will also help you make smart decisions in your coding journey. Keep going—you're on the right path!
Reading "Clean Code" by AI tools and watching coding videos on YouTube can be really helpful. Spend time not just on writing code, but also on thinking about how to design it well. This will help you adapt to changes and become skilled in design techniques. Learning about design patterns and principles will also help you make smart decisions in your coding journey. Keep going—you're on the right path!
Updated
Mark’s Answer
I recommend focusing on learning the best practices of OOP right now. It's important to not just get things working, but to do them the right way. If you're curious, you might also explore data structures and algorithms. You can try solving challenges on platforms like LeetCode, which can be quite enjoyable! When you interview for a software engineer position, you'll probably face a technical coding challenge. Practicing now will help you prepare for that. Plus, these skills are highly valued in the industry.
Updated
Rakshitha’s Answer
A lot of important information has been posted already so here is what I'd like to add:
1. Never be in a learning rut. Just theoretical learning especially in Computer Science never works. Always BUILD.
2. Put your learning to good use by actually building projects. Once you have learnt a language, even the basics look for Github repositories that list out step by step guide on creating amazing real projects. You can look up "build-your-own-x" repository on Github. They are open, free with amazing ideas.
3. Next, in the current market it is extremely important to know AI-ML concepts. So use AI to structure a roadmap and even teach you concepts you would need. AI is an absolute must.
Hope this helps!
1. Never be in a learning rut. Just theoretical learning especially in Computer Science never works. Always BUILD.
2. Put your learning to good use by actually building projects. Once you have learnt a language, even the basics look for Github repositories that list out step by step guide on creating amazing real projects. You can look up "build-your-own-x" repository on Github. They are open, free with amazing ideas.
3. Next, in the current market it is extremely important to know AI-ML concepts. So use AI to structure a roadmap and even teach you concepts you would need. AI is an absolute must.
Hope this helps!
Updated
Thomson’s Answer
After learning OOP in C++ and Java, the next step is to move into Data Structures and Algorithms (DSA), which is the foundation for efficient problem-solving and writing optimized code. Focus on mastering core structures like arrays, linked lists, trees, and graphs, and practice regularly on coding platforms to strengthen logic and coding skills. Once comfortable, deepen your understanding of core computer science fundamentals such as operating systems, databases, and networking, which are essential for real-world development. Alongside this, learn SQL and REST APIs to understand how applications store data and communicate, then start building real projects to apply these concepts practically. After building a solid foundation, move into system design basics to understand scalability and how large systems are built. In parallel, begin exploring modern technologies like AI and GenAI by learning Python, using libraries, and understanding how intelligent systems are integrated into applications. You should also get familiar with emerging agentic AI architectures (autonomous agents, workflows, orchestration) and basic MLOps practices such as model deployment and monitoring to stay current with industry trends (suggestion based on current industry direction). Finally, learn developer tools like Git, testing, and debugging, and follow a progression of OOP → DSA → problem-solving → databases/APIs → projects → system design → AI/GenAI + tools to become job-ready and future-ready.
Updated
Sami’s Answer
Hi, اركان! OOP is a valuable foundational skill and it's good that you have an understanding of it. There's a lot that you can do, but I mostly recommend diving into complex algorithms, data structures, and development methods. You can gain experience by joining development clubs, starting your own personal projects. You should also look into different development tools, like Git, Github, and different frameworks, to expand your skillset. Don't forget to gain experience working with others in a team setting. Collaborating with different personalities is just as important as technical skills.
Updated
Rishav’s Answer
Hi Vivi,
Here's a friendly step-by-step guide for you:
1. Choose a coding language to start with, like Java or Python. If you're interested in AI, Python is a great choice.
2. After learning Java or Python, you'll be ready for backend development. To handle the visual side, learn HTML and JavaScript. They're really useful!
3. Now that you know both backend and frontend, you'll need to learn SQL for storage.
4. With all your skills, think of a simple problem and try to solve it. This is super important and will teach you about things like networking ports, logging, and APIs. For example, you could try building a Library Management system.
Here's a friendly step-by-step guide for you:
1. Choose a coding language to start with, like Java or Python. If you're interested in AI, Python is a great choice.
2. After learning Java or Python, you'll be ready for backend development. To handle the visual side, learn HTML and JavaScript. They're really useful!
3. Now that you know both backend and frontend, you'll need to learn SQL for storage.
4. With all your skills, think of a simple problem and try to solve it. This is super important and will teach you about things like networking ports, logging, and APIs. For example, you could try building a Library Management system.
Updated
Dylan’s Answer
Dive in to the pool of possibilities - I had a similar situation when I was in university so I started making my own programs / games with that foundational knowledge, if you want to do something personal and creative.
If your focus is to expand your knowledge, then start playing with data structures, algorithms, etc.
Or start growing your knowledge in something totally different - Webapp development, SQL, etc.
The choice is yours - focus on what excites you and jump into the technologies that go into building those applications (games, websites, applications, etc.). Personally, I jumped into developing simple Android applications to further solidify my understanding of OOP, dabbled with creating simply games too just as a fun hobby on the side.
If your focus is to expand your knowledge, then start playing with data structures, algorithms, etc.
Or start growing your knowledge in something totally different - Webapp development, SQL, etc.
The choice is yours - focus on what excites you and jump into the technologies that go into building those applications (games, websites, applications, etc.). Personally, I jumped into developing simple Android applications to further solidify my understanding of OOP, dabbled with creating simply games too just as a fun hobby on the side.
Updated
Alexander’s Answer
Hi there!
It's awesome that you've already taken Object-Oriented Programming in college. If you're keen on pursuing computer science further, I suggest diving into Data Structures & Algorithms. Also, start exploring which areas of computer science excite you, like mobile app development, machine learning and AI, or web development. Watching YouTube videos and doing some research can help you see what working in those fields is like.
If you have some spare time, try building your own applications. It's a great way to gain practical experience and something impressive to add to your resume!
It's awesome that you've already taken Object-Oriented Programming in college. If you're keen on pursuing computer science further, I suggest diving into Data Structures & Algorithms. Also, start exploring which areas of computer science excite you, like mobile app development, machine learning and AI, or web development. Watching YouTube videos and doing some research can help you see what working in those fields is like.
If you have some spare time, try building your own applications. It's a great way to gain practical experience and something impressive to add to your resume!
Updated
Suresh’s Answer
Explore online platforms: Websites like freeCodeCamp, HackerRank, LeetCode, and Coursera let you learn at your own pace, giving you the freedom to grow independently.
Engage in project-based learning: Create small projects like a to-do app or a simple web scraper. These projects help you connect what you learn with real practice and combine different ideas.
Use active recall: Instead of just reading, challenge yourself by implementing algorithms, tackling coding challenges, or writing code from memory. This approach strengthens your skills and understanding.
Engage in project-based learning: Create small projects like a to-do app or a simple web scraper. These projects help you connect what you learn with real practice and combine different ideas.
Use active recall: Instead of just reading, challenge yourself by implementing algorithms, tackling coding challenges, or writing code from memory. This approach strengthens your skills and understanding.
Updated
Robert’s Answer
The answers given are helpful. Learning basic concepts and algorithms is important. If you find learning slow, try exploring other programming languages. This will help you see how different tasks are done in different languages. For example, you can write a function in both C++ and Python. You'll find Python is easier, but C++ is faster. Then, try using Golang or Rust for projects. These languages are faster than Python but a bit harder to learn. Don't try too many languages at once. Research those that interest you and are valuable in the industry. Work on similar projects in each language to understand their strengths and weaknesses. Keep these projects simple to start. Once you find a language that you enjoy and that is useful for your career, focus more on it. While schools often teach C++ and Java, learning other popular languages can be a valuable skill.
Updated
Raghavendra’s Answer
Once you complete learning OOP in C++ and Java which is good foundational basics, I’d focus on data structures and algorithms, SQL/databases, Git/GitHub, and then the basics of operating systems and networking. Also, I’d start learning testing, clean code, and design patterns, and pick one path like backend, web, or mobile to build projects in. If your university is slow, the best way to move faster is to learn one thing at a time and actually build stuff with it. Keep learning you will do great!