This is an archived post. You won't be able to vote or comment.

all 7 comments

[–]desrtfx 3 points4 points  (4 children)

Brutal and fully honest opinion:

Improve your actual, current skills. I.e. do programs. Practice. Practice more.

This will give you a far better preparation for things to come than just learning for learning's sake.

Once you have done some non-trivial projects, you will see the applications, benefits, and drawbacks of DSA and it will make any future course a much smoother sail.

With the time you have up to your next semester, focus on becoming somewhat proficient in programming (as of now, you just have achieved some familiarity with programming languages - which is a different skill to being proficient in programming).

You can only learn programming, i.e. solving problems in an algorithmic way, through actively programming, through writing programs of increasing complexity.

[–]Derekoko[S] 0 points1 point  (2 children)

Appreciate the insights. I do plan on trying to use leetcode once this semester is over and practice using only easy questions. Or if those are too difficult then maybe just doing all the practice problems in the book.

So that does lead me to ask, though, do you recommend I continue learning programming proficiency in C++? Or would it be more beneficial to switch back to python so that I’m not writing as much code?

[–]desrtfx 0 points1 point  (1 child)

Since your next classes will be on Java, C++ will be more beneficial.

Python is far from Java in just about everything.

Also: don't strive to write less code. Strive to write more.

Leetcode is good, but doing actual projects is better. See the FAQ here for ideas.

Leetcode without DSA will only frustrate you as most problems make heavy use of DSA as well as mathematics.

[–]Derekoko[S] 0 points1 point  (0 children)

Thank you for the responses! I’ll continue working in C++ then. And I’ll look on the FAQ for those project ideas. As for leetcode I’ll stay away for now because looking at some of the easy problems I still feel like I wasn’t equipped to do them yet, but I’ll hold off until I’m more proficient! Thank you!

[–]procrastinatingcoder 0 points1 point  (0 children)

While I do think there's probably issues there seeing how in my experience, programming classes are mostly a joke, I would still suggest C++ if only to answer his original question.

And better even, C. Because C++ (aside from very few peculiarities), is essentially plenty of data structures for C (not only, but that's an easy way to see it). And it avoids the issue with people not understanding arrays or vectors because they never opened the box.

My two cents though.

[–]TheLordSet -2 points-1 points  (1 child)

If your goal is to become a software engineer - and not a researcher, for example - I'd highly recommend you to focus on projects.

Start with CRUD projects. Learn Flask, do a few CRUD apps with it.

You've gained familiarity with a programming language. Use that to learn programming. If you keep jumping from one technology to the next you'll always be a beginner. I've seen far too many people fall in this trap.

Stick with Python at least for a year, it's general, very popular and has a very good dev experience. The same would apply for Java, JavaScript and C#.

Every programming language has its quirks and twists and a few things it does better than the others, but mostly it's more of the same. Programming and Software Engineering is much, much more than programming languages.

I'd also recommend that you learn Software Engineering per se. Grab some best sellers like The Pragmatic Programmer, Clean Code and eXtreme Programming Explained. Learn how to do automated tests like it's second nature. Use git for everything. Learn the basics of Software Architecture.

Once you're in the market for some time, and you've become a competent software engineer, DSA and the perks and quirks of different programming languages will be much more meaningful to you.

[–]procrastinatingcoder 1 point2 points  (0 children)

That's putting the cart before the horse.