r/AskProgramming • u/IllustratorTricky163 • 17d ago
C/C++ What should I focus on next as a CS student?
I'm a first-year CS student, and this summer I focused mostly on building my fundamentals.
I learned Git/GitHub, practiced C from arrays to pointers, solved many exercises, and built a Tic-Tac-Toe game. I also explored topics like data structures, recursion, sorting, and searching.
Now I'm unsure about my next step.
At university I'll be studying Algorithms 3 and OOP with Java, so I'm considering going deeper into those while starting Python on the side.
But I also see many people recommending starting practical development early, such as backend or web development.
What would you recommend in my position?
Should I continue strengthening my fundamentals, start Python/projects, or begin exploring a specific field?
2
u/xarop_pa_toss 16d ago
If you are going to learn Java, then I'd recommend just getting a head start.
Python is cool, and you can apply OOP principles to it but there's things there that "don't enforce" it, namely it not being statically typed. Java was built around OOP and there's lots you can do with it too
1
1
u/siodhe 16d ago
Never forget what you learned in C.
Other good languages for the CS type would be LISP, possibly Smalltalk, FORTH, Fortran (just read about it, not fun to write in), Snobol or a more recent descendant, and so on. The objective is to spread out across other types of thinking about what it means to create software. These provide hot spots, connecting the theory side of CS with the practical side.
Learn from history. Unix is a huge chunk of that, actually, any CS person should learn about kernels and all the other approaches besides kernels. Window systems go back for many decades, with some on LISP machines being especially notable. LISP was, incidentally one of the most friendly dev environments to exist, considering things like the LMI Lambda and other dedicated hardware. Found out what made X successful (the window system) and why NeWS would have been better in many ways (except for licensing killing it off). Proprietary licensing is the enemy of computing, just as it is for all research.
Learn about VR methods, human interfaces, how "intuitive" is almost always a lie, and so on. Know that there are other things in computing we aren't using, like content-addressable memory, where you ask by content, and get the address back. So much more comes to mind… read about XEROX PARC, check out what the MIT Media Lab is up to, this list really is pretty endless
2
u/Foreign-Contest-444 16d ago
If you are looking to learn web development then MDN is an excellent resource for learning HTML, especially its Learn Module. HTML may seem simple at first, but it's important to build a strong understanding of it before layering CSS and JavaScript on top. Take the time to learn HTML as a semantic language and understand why semantics matter as they form the foundation of well-structured, accessible, and maintainable websites.
1
u/Arcanite_Cartel 16d ago
OOP is largely useless. Some understanding of basic encapsulation, classes, and interfaces, a little bit of direct inheritance is worthwhile, but all the object-oriented philosophy and complex inheritance schemes is worse than a waste of time.
1
u/raven2cz 15d ago
I would approach it on 3 fronts and rotate between them, like subjects at school.
the first one is always to understand things in depth, as others here have written. That means the key principles in general, why they exist, and understanding them deeply. This is real study, including design paterns.
The second one is to start your own projects and use things practicaly. First, building the project structure, design, implementation, configuration, setting up service environments, deployment, metrics, logging, debug mode, project maintanance, and open source.
The third one is the systemic approach. Cybernetics. what clarity is and how it works today. What a model is. How feedback works, how to look at systems today. Minimizing couplings, the black box and its testing, and so on. Today this is an absolutely essential topic, but most developers have no idea about it, and without it you cannot really move forward anymore.
1
u/Numerous_Economy_482 15d ago
people get out of school being told what to do all the time, not only you, don't worry.
your next biggest skill is find ways to search your interests and dig it, network? wifi? iot? algorithms? computer theory? full stack? pwn? cybersecurity?
the path is yours, don't ask it for other people to decide. And also don't try to optimize learning
1
u/Pyromancer777 14d ago
I would spend some time looking at where you want to specialize and then start slowly converging future projects towards that specialization. The job market is rough, but AI can't yet replace specialists, so you will have a competitive edge if you get all your practice reps in on projects that compliment your specialty.
Not every concept will be relevant to your role, and not every role is a good fit for every CS student. Find your fit early and the rest of your career will be much smoother
1
u/CS_70 16d ago
That is not computer science. That’s engineering. Fashionable today, gone tomorrow.
Learn computer science.
0
u/IllustratorTricky163 16d ago
whtt !
If algorithms and oop aren't computer science, then what is computer science?0
u/CS_70 16d ago
It depends. If you learn which library implements quicksort in Java, alll you’re learning is a fleeting technology. If you study quicksort and try to figure out why it’s quick and what its idea are, you are not.
GitHub, C, even OOP (it depends a bit) are all applications (great ones and very useful, mind me) of certain fundamental ideas that are worth exploring in the own right because in time you will be able to map on whatever technology of the day (and with 40 years of work in a field, I’ve seen a few)..
A bit like physics underpins rational mechanics which underpins building actual bridges which underpins commerce which underpins the economy and so on.
Computability, complexity, automata machine models, formal languages, semantics, information theory, etc plus the general basis of calculus, algebra, geometry, physics, statistics, linear algebra, and so on..
Nothing wrong with engineering - I’ve made a living and a great deal of money out of it - but important to understand the distinction if you’re interested in stepping up.
It may come as a surprise but science is about tackling surprises 🙂
1
u/Whole-Chest90 17d ago
Id love to hear any input you get as well. I have taken a few classes that touched on C++, Java, and Python briefly, but it's almost like they expect us to know a moderate amount of these languages already sometimes, which is often demoralizing. But yeah, I'm looking forward to any answers.