Programming is the linchpin of software. Sure the task of coding a piece of software takes up maybe 20% of a software design project, but it is a skill that is required. In addition you have to know how to solve problems, design the software, test the software and write readable documentation.
Do students get enough practice programming? Are the languages used relevant?
Most places teach something like C, Java, C#, Objective C, or maybe C++. Some variant of the C-family of languages. They have been around for many years, but most are used in some form in industry. Other places teach Python, or maybe more esoteric languages such as Scheme or Haskell used mainly for teaching purposes. Nothing is really wrong with using any language… even Pascal makes a nice teaching language, but teaching a industry-relevant language does help students, especially for those who do industry co-op placements. The problem is that students may not be getting enough programming experience, or at least relevant coding experience.
This includes programming mid-sized systems, understanding a diverse range of languages, being able to integrate languages, designing testing strategies, parallel programming, and real-time programming. Ideally it would also include some real-world programming of mobile systems, and even looking at legacy systems with languages such as Cobol. It is hard to scale from writing programs that run 500-1000 lines in length to the 100,000-1M line behemoths regularly encountered in industry without practice.
“The only way to learn a new programming language is by writing programs in it.”
Kernighan & Ritchie