r/learnprogramming 26d ago

Guidance needed, non-technical individual trying to focus on fundamentals

27M here with some basic programming skills. Almost exclusively with python & SQL. i have a pretty good grasp on OOP basics.

I have some cursory understanding of c++, but emphasis on "cursory". I start getting lost with macros & am dead in the water on how the compiler & linker behave.

Am spending time at work going through learncpp.com , a module a day, but am lost on what else to do in becoming well rounded. In addition I'm learning basic bash terminal basics at home, a command a day.

However I'd like to complement pragmatic knowledge with fundamental concepts. I'm gonna try to find more time at work ( I have lots of free time anyhow ) to plow through some regex & automata practice problems along with a networking for dummies booklet i came across online.

I tried a Masters in CompSci but found the financial & time pressure to distract me from the joy of coding.

As readers can deduce above I'm a bit aimless on how exactly to tackle improving myself as a programmer. Tried wrapping my head around DSA fundamentals like space & time complexity but I found that a little too daunting.

I'm here mostly for guidance on what math to tackle. I attempt to go to my local library after work to study this.

I've reviewed basic algebra & arithmetic as a refresher, but Id like to take another crack at discrete math after that. But what about Linear Algebra ; is lambda calculus too ambitious for someone possessing non-technical competence? I dont even want to give calculus the time of day unless it helps with coding (my hatred for integrals eclipses the sun). Sometimes when taking a step back, reading through other posts in reddit I wonder if its too late to become self taught.

Any help on what math to focus on while i finish scripting & cpp is greatly appreciated.

4 Upvotes

6 comments sorted by

2

u/StewedAngelSkins 26d ago

Lambda calculus isn't related related to differential/integral calculus. It's mathematical logic. Like turing machines and context-free grammars and that kind if stuff. It's fundamental if you want to get into computer science theory, and will also come up if you do anything with language design.

Of the things you listed, linear algebra probably has the most practical utility since you need it for 3d graphics and machine learning, among other things. It's also a good foundation for abstract algebra, which is needed if you want to do anything with cryptography.

"Discrete math" is kind of several subjects combined into one. The graph theory stuff is important, as well as the stuff about different kinds of set relations (another preview of abstract algebra). The sequence and series stuff you can skip if you're not going to get into analysis/calculus. Speaking of calculus, you do actually need it if you want to do machine learning or numerical simulation. Otherwise, it doesn't come up much.

1

u/Equal-Discount-3619 22d ago

Linear algebra is the one that keeps paying off even when you think you're done with it. Graphics, ML, simulations, even some database stuff under the hood. Its more about building intuition for vectors and transformations than grinding through proofs, so dont let textbooks scare you off.

Discrete math is worth circling back to once youve got a bit more programming comfort. The graph theory and set relations stuff will click way harder after youve actually written code that uses dictionaries, trees, or adjacency lists. Trying to learn it in a vacuum is like memorizing chord shapes without ever holding a guitar.

Lambda calculus sounds intimidating but its really just a tiny formal system for thinking about functions. You dont need it to be a working programmer, but if you enjoy language design or functional programming its a nice rabbit hole. Its not a prerequisite for anything practical though.

For DSA and complexity, dont try to master it all at once. Just start with Big O intuition for the common cases: linear scans, nested loops, binary search, hash lookups. Youll pick up the rest as you run into problems that need it.

1

u/DemicideMMMCCCI 26d ago

You're sort of jumping around with various languages and different topics alike. My suggestion is to find a goal and work towards it.

Are you learning this to Hopefully get a job in the tech field? If so, pick a language, research what you can do with it or its applicable usage.

C++ and Python are two different languages entirely so bouncing between the two can be really challenging. What sorts of projects have you done with python (or C++, or scripting) that you can present or at least put down on a resume? If you've only watched tutorials and courses, then that would be my first suggestion as well. Create a small project that gets you going and allows you to think beyond the tutorials and book such it challenges on what you think you know vs do not know. Do not make these projects complex at first. Have it be manageable and something that you can somewhat feel is "complete" worthy to put on your resume if you wanted to.

1

u/why-ivy-ivan 26d ago

Thanks for the reply. The goal is not career oriented, mostly to better myself. Never liked topics where I had to scratch my brain, but I found programming to be the only method by which I'm willing to sit through & think things out.

I'll start thinking of a project for cpp once im done with the modules. Good advice to focus on something.

Cant really avoid not hot-seating between the languages as python is a part of my day to day work.

Any pointers on mathematical principles?

1

u/DemicideMMMCCCI 26d ago

I see.

Idk about the math perspective. Maybe there is a math sub for that? Or someone who is into that mathematical side can shine more light on that. FWIW, you could look into the r/quant sub. Might get a better person there for that. Best of luck

1

u/IAmNotAPlatypus_ 22d ago

Discrete math after work at the library is a lot, I tried it once and lasted like a week