If you look at the subjects studied in IT in academia, you will find about half of the time wasted in math, science, electives, etc. and the other half on academic subjects such as: Compiler design, Theory of algorithms, Computer Architecture, Optimization, Operating Systems, Digital Electronics, and few other courses related to industry such as C programming and Web Programming.
Most of the above mentioned subjects are nice-to-know but will not either directly provide a strong background in what is required in day-to-day IT.
Take the Microsoft Web Programming requirements (that is, areas required by someone to be a productive team member in an organization):
1- C#.NET or VB.NET
2- ASP.NET
3- HTML and CSS
4- SQL Server (or another database)
5- OO application programming and design
6- Java Script
7- MVC framework
8- Some exposure to source control tools
9- Some exposure to automated testing tools
10-Bug tracking tool
11-E-Commerce Concepts (optional)
12-ORM
13-Some business analysis skills
14-Some communication skills
15-Probably, some cloud computing fundamentals
As you can see that most of the requirements above are rarely focused on (you may get 1 course in some at the most) during college/university.
One can't fully blame institutions since there are many such stacks of technology and they keep on changing.
Most of the above from Microsoft will not help someone who wants to develop applications in Java.
The real problem is that not one of the technology stacks that are needed by the business today is ever covered in full.
The above covers the question of suitability of graduates to business jobs like programming in business environment. The needs to research labs, etc. is not covered by this answer. Also other areas require more skills than the above, such as Game Development, Embedded Development, Real-Time Systems Development, etc.