I think the main issue is that a lot of CS programs don't really teach these subjects. The top rated CS programs teach them(I learned all of the subjects listed in TFA while I was an undergrad at UIUC) but I think a lot of CS degrees are just Java or C# programming training now.