I taught my spouse to program when she decided to change fields, and did a similar thing where she wanted to master the advanced stuff by taking classes (she took them for credit on the off chance she needed it in a masters program) The classes she took were equivalent to three classes majormajor suggests:
Data Structures and Introduction to Algorithms: everyone needs this and it is maybe 50% of leet code problems
Assembly Language Programming and Machine Organization, Introduction to the Theory of Computation: this is the low level of how computers really work
Operating System Fundamentals: concurrency programming plus a lot more useful stuff
A standard Introduction DSA course will generally not cover advanced DSA stuff like segment trees or Heavy-light decomposition, or theoretical stuff like number theory, or computational geometry all that stuff you would find in the competitive programming space.
> segment trees or Heavy-light decomposition, or theoretical stuff like number theory, or computational geometry
I am not sure if there are any problems on leetcode that require any of these, but based on a sample of a few of their contests, if they exist they are a very small fraction (<<50%) of all problems.
I do CP on various sites so I don't know if it's for Leetcode in particular. But some companies like Salesforce or DE Shaw or Codenation do include advanced problems on their tests.
Are there companies that ask a lot of leetcode bards in their interviews? That seems like overkill even for FAANGs though I can see why some groups might do so purely to filter by Math ability/interest.
I think I know more about interview questions then leet prep, but I find the remaining 50% is specific to the job but in the same vein as data structures and algorithms. So in game programming maybe it is a path finding problem or 3d math hit detection. In backend it’s an algorithm about network flow or caching. Still data structures, but more practical for the role!
The school where I earned my CS masters required those with non-CS undergrad degrees (like myself with a BS in a hard engineering field) to take 12 semester credits of additional coursework to make up for this fact. I'd say those three subjects account for about 9-10 of those credits. I suppose you could say they're important.
Data Structures and Introduction to Algorithms: everyone needs this and it is maybe 50% of leet code problems
Assembly Language Programming and Machine Organization, Introduction to the Theory of Computation: this is the low level of how computers really work
Operating System Fundamentals: concurrency programming plus a lot more useful stuff
I think it is definitely worth it. Good luck!