
It's not the number . . .
The problem organizations like IBM, Microsoft, Google, Oracle, etc. have isn't the NUMBER of STEM graduates in the US -- it's their composition. This is just my personal experience, injest large grain of salt, but we have plenty of people who can do HCI, network design, database design, software engineering, etc. But, if you need someone to write systems (ie. kernel) level code, crazy robust networking stacks, database implementation, or actually build a massively distributed system, we're pretty lacking.
I'm a 3rd year PhD student, and I took a course on low level network (more than UDP but less than full TCP) implementation in the Linux kernel. There were 2 Americans in the room -- me and the professor (now retired). Every other student was an Indian on a student visa. It was a hard class; it kicked my butt all around the room. I could have easily taken a class that required a lot less time, effort, and thought and fulfilled the same requirement, but I was and am generally interested. That scale seems to balance a lot differently for a lot of younger American workers than it did for me. Twenty Indian guys and gals took the class and largely did better than me, the only American born student.
The real problem is that our STEM graduates are often taking the easy way out. You COULD take that physical chemistry class, or you could take the chemistry education class -- they fulfill the same requirement. But when you get out there in the job market, nobody wants to know that you found a better way to teach students about reaction X or Y. They want to know if you can do the job.
I know PhD graduates who can only program proficiently in a single programming language. I know 12. I know PhD graduates who couldn't manage their own workstation. I could manage anything from OS/2 to Slackware to Windoze to BSD (just please keep me away from that Mac). BUT, that's because I'm interested in learning all the things. It's a personal work ethic, interests, and character thing. If this study lumps me with the guy who can only function in Python on a Ubuntu box, it misses the greater point. It's not just graduates we need -- it's skills. And, in my experience, the effort it takes to get certain skills scares domestic students off wholesale.
The problem in America's hiring of STEM, and especially CS/IT, is that what they get in school is not what is expected in the industry. I know people in the field who have 0 higher education who have had to fire doctorate bearing people for incompetence. If we really want to analyze this, we need a better way of describing educational outcomes than just "Got a BS/MS/PhD in CS." Not all of those are created even remotely equally. . . at least not where I've been.