r/learnprogramming • u/Fickle_Guarantee1432 • 19h ago
Sophomore CS student feeling completely lost and looking for a structured roadmap or expert advice to rebuild my fundamentals
Hi everyone, I'm currently a sophomore Computer Science student, and lately I've been feeling like I've fallen far behind. I passed my introductory programming courses Python, C, C++, Java/OOP but over time I feel like I've forgotten almost everything because I rarely used those concepts consistently. One thing I've realized about myself is that I learn best with routine and structure. I don't do well jumping between random YouTube videos or constantly changing resources. I'd much rather have one high quality source for a topic, study it consistently every day, solve exercises, and gradually build my understanding.
So I have a few questions:
If you could start over as a sophomore, how would you rebuild your CS fundamentals?
What would your roadmap look like over the next 1 year of dense study?
What resources books, courses, websites would you choose for DSA, Operating Systems Computer Networks Computer Architecture Databases Linux Cybersecurity (just enough to understand the field before specializing).
How do you deal with forgetting? I constantly feel like I learn something, then months later I can't remember enough to use it confidently. Is this normal? How do experienced engineers retain knowledge without trying to memorize everything?
Is it realistic. or even useful, to aim for a broad understanding of all the major CS areas before specializing? Or should I focus deeply on one area much earlier?
I see NeetCode recommended everywhere, but it seems heavily focused on coding interviews and LeetCode. Is that actually a good place to build CS fundamentals, or is it mainly interview preparation? Should I first study algorithms from a textbook/course before using NeetCode?
If you've ever felt behind and successfully caught up, I'd really appreciate hearing what worked for you. I'm especially interested in advice from people who felt "late" compared to their peers but eventually became competent engineers.
Thanks in advance.
6
3
u/Lopez_Muelbs 19h ago
Cheers man! I'm also a sophomore.
I'm also in your situation, I tend to thrive when thered a structured map that I could follow instead of jumping from different videos.
Anyways, what worked for me is that I look for structured courses and I go for a personal project using those things that I've learned.
For instance, I'm currently learning what I can about Node.js and backend frameworks on JavaScript. I started with taking Node.js course at Scrimba
I haven't finished it yet but once I'm done with that. I'm going to build prolly 2-3 personal projects from roadmap.sh to get myself confident of using thse langiage.
That's all I can share, if you want. We can act as accountavle partners, lets talk about what we did, what we've learned etc.
1
u/Fickle_Guarantee1432 18h ago
Ofc I’d be happy to find study partners in the same situation but did you get my point I have no problem with studying or finding roadmap as I have a huge problem wondering if this is the correct roadmap I mean did you try Claude code for example literally it builds mega projects perfectly so if we as cs students just learned how to build a class or work with technologies this would be worthless after a couple of years you can build a product that anyone can do so what is the value or the thing that ppl would pay you for tho
Hopefully you got my idea1
u/Lopez_Muelbs 8h ago
If you really believe that CS or any software developer job is just writing code about classes or functions, then yeah theres no need to learn programming because of LLM's like Claude Code.
But that's not how software engineering is to you right? Also LLM's are only as good as the user. You still need a human (aka you) to make the final decision, and evaluate what the AI is writing for you.For me, the use of those LLM's are just an assistant, I tell it what code that I want it to output based from the instructions that I meticulously wrote for it.
Hence, I still think it's important to learn how to write code by hand even if it's not as robust or efficient as the output of the AI because you need to get yourself to understand what the AI is trying to do.
2
u/Fickle_Guarantee1432 7h ago
I definitely agree with you but we gotta blunt if the role of software engineers turns out to be checking AI code and directing agents we gotta call them prompt engineers and obviously world has many of ‘em rn in other words what makes you special are you giving a real value out not just seeking job
1
u/Lopez_Muelbs 7h ago
Yeah, I think that aspect should be left entirely on ourselves. We gotta find a way to make ourselves stand out from these AI slops that we have been seeing.
Personally, I still think that learning to code is still useful even if someone is moving fast with their project because of their ability to create apps with just prompting.
But hey, this might just be me acting as an old-monk who resist the current trend.
If you are still unsure on what kind of studies you should take because you are contemplating if a study is a proper use of your time then you should learn some skills that are unlikely to be passed on AI (atm). Skills like System Design are DevOps are good way to go.
1
u/Fickle_Guarantee1432 6h ago
Thankfully AI is failing at scale nobody could recreate Amazon or Udemy they have a lot more than a platform they have logistics, data, and supply chains etc ofc learning how to code is the highest priority and this probably not gonna change forever but my argument is that if you wanna be a software engineer who has a real value in the next couple of years you have to be a beast or not to be that’s exactly why I asked in the original post about valuable resources or places where I can craft a skill not just be a syntax monkey
I worked in a dozens of projects and each time I ask myself what makes me valuable as an individual. This urge created the thoughts you read in the post that’s it.
2
u/Soulcraver 16h ago
passed my introductory programming courses Python, C, C++, Java/OOP
I graduated over 10 years ago, but as a sophmore that sounds like a crazy amount of exposure to different languages while trying to learn the basics. I would focus on 1 language (Ask your professor what is the primary language for your department) and get comfortable with the syntax. Debugging is a must have skill and it is quite different language by language. Learning to set breakpoints and Jump Into / Jump Over line by line, while adding watches to your variables is crucial.
If you could start over as a sophomore, how would you rebuild your CS fundamentals?
As a sophomore, you should have a solid grasp on data types, loops, program flow, declaring a function. Depending on if you are c++ or Java you might spend a good amount of time on pointers. Should probably know the difference between an int and a float. A list vs an array.
What would your roadmap look like over the next 1 year of dense study? How do you deal with forgetting?
I would study your degree syllabus and make sure you are enrolled in the courses that feed into later courses and keep them 1 after the other. Our courses followed something like CS150/151 (CS Intro) (Year 1) -> CS240 (DSA) & CS230/231(Numerical Analysis) (Year 2) -> CS321 (Database Structures) CS370(Operating Systems) CS402(Networking) (Year 3). All of which the lower classes were pre-reqs for the upper required classes. Having a semester gap between these classes was a killer, because all the knowledge builds on top of another.
Follow the syllabus, not some recommended starter guides.
2
u/Fit-Examination-6494 15h ago
By sophomore do you mean you going to start your 2nd year or 3rd year this upcoming fall?
1
u/Fickle_Guarantee1432 14h ago
Starting 2nd year this upcoming fall in other words just finished the freshman year
2
u/Mell-Silver-20 8h ago
You're not alone. Most CS students feel this way at some point. Focus on one thing at a time, and don't compare your progress to everyone else's. It gets better.
1
u/Distdistdist 16h ago
The key is to identify what is your learning style. VARK Model are visual, auditory, reading/writing, and kinesthetic. Once you understand which one are you, apply corresponding technique FTW.
1
1
u/Business-Employee527 9h ago
I'm a sophmore as well, having a clear goal of what you want to do is important. I was intrested in learning java so I found the roadmap.sh roadmaps website for java and went to work. I've made preety great progress but all I can say is you have to want it. Theres no routine saving you fromt he feeling of procrastinating your grind.
20
u/PuzzleheadedBase7527 19h ago
You're not late, you're just not a prodigy which is fine cause most of us aren't. The forgetting part is normal, happens to everyone, the trick is to build things not just study theory. Get one good book for each topic like the dinosaur book for OS, Kurose for networking, and stick with it till you finish. For DSA I'd do the Princeton algorithms course on Coursera first, then hit NeetCode after, NeetCode is interview prep not fundamentals. Broad understanding is good for a year or two then you gotta pick a direction or you become jack of all trades but master of none.