Why do Universities still teach old languages? Because those old languages got it right. Sure they have rough edges, C's strings could be better and C++ could certainly be decrufted a bit. But they work. And there's no denying that. What counts more than anything else isn't efficacy of language, it's environment.
A million years ago when Mainframes were hot stuff and Dr. Knuth still had hair, we had the likes of Cobol, APL and FORTRAN (then spelled in all caps because we hadn't figured out that it wasn't cool to do that). Lisp was there too and so was Algol and so forth (FORTH wasn't quite there yet though, we're still in the 60s). However, most of these languages were fairly limited unless they were supported by the Government (FORTRAN) or Business (COBOL). Remember that the Internet was 4 computers in 1968 so getting information on a language would involve hearing about it from a colleague or some such and then going to a library, looking through a card catalog (a literal file system) and seeing if they had it. If you were lucky you could go to the source directly at whatever university or company was working on it. So knowledge ecosystems were limited.
Now let's talk about hardware. I'm just old enough to have been raised on a 386. A 386 was a God Machine compared to what they had back then. We're talking about transistors the size of cockroaches and wired collections of magnetic cores (Giving us the term "core dump") that held kilobytes of memory. These computers cost hundreds of thousands or millions of dollars. With machines being so expensive and with relatively few users, you had a lot of variation. Word and bit collection sizes that would make most of us go insane with frustration if we had to deal with them today. Bytes have spoiled us all. So what did you program these things in? Assembly on Punched cards. Sometimes you might have a machine specific higher level language to work with like PL/I or similar.
By the end of the decade, integrated circuits had started to come down in price and had begun to displace large scale transistors while memory also got cheaper. You still ran into the issue of all kinds of architectures but things were progressing. Then some bored programmer wanted to play Space War. And it changed the world. While languages like COBOL and Lisp were portable, C was the first language that was portable at a low level. Combined with UNIX (Like a really nerdy Voltron), it battled Pascal for dominion.
By this time, computers at universities were fairly common and Hacker culture was beginning to form. This led to the formation of things like the GNU project and other such initiatives as well as jokes like INTERCAL but I'm getting ahead of myself. There was a parallel stream here, the screaming birth of Software Engineering. Object Oriented Programming was not new in the early 80s but by then computers were common enough that large scale code bases were becoming hard to manage due to greater demand so it spurred development there.
Other developments ensued: the widespread use of home computers, the spread of the internet, the rise of windowing operating systems, the rise of the video game as a popular art form, and the rise of the parallel core machine amongst others.
The most important of these developments for the proliferation of languages are the introduction of the x86 and its various competitors that were folded into the IBM PC and its competitors and then the rise of the internet to facilitate language spread. So you've solved the problem of architecture portability and 90% of the market uses the same operating system. What does this do to the need for languages? It flattens them.
Why? Fundamentally language development and propagation are driven by need to solve problems. If you've got a language that works, you don't need to change it. Perhaps you add a framework here or there to streamline development or a library for task automation or the methodology of the month but ultimately you're crufting onto the language. This cruft though, it's important because there's where you get the environment from. You get culture that way and propagation follows the waves of culture.
Languages adapt and C family languages are incredibly adaptable due to being both widely deployed and extremely powerful. They also have something else, tremendous momentum. Say what you like about COBOL, there is a lot of wrapped COBOL running around out there; some of that is mutating into Java and other things but it will still being going along none the less. Some languages never really take off because they weren't designed to solve a widely scoped problem. C and C++ are widely scoped problem solvers. APL is not, at all. APL was designed to use as few keystrokes as possible in an era when that really mattered. It took it too far compared to other languages at the time and thus balance was not achieved, momentum was not gained and culture rampancy didn't take hold.
Rampancy is another key. The very best languages have something viral about them. They get inside your head and they stay there. That something viral might be monetary like a company saying "This language is win" and giving out T Shirts but I think it's more than that. Java may be a funky, crufty language but it solves a problem (several actually) and has a very powerful, meme-plague ridden ecosystem. So it keeps on propagating. And Propagation really is the key, your professors teach you old languages because they know there languages and these languages are still used out there. C is so close to the metal and so flexible that it is useful conceptually even if you never really use it. C++ is a thornier sell perhaps but I'd argue that as a much "harder" Object Oriented language than most, it serves as an excellent teaching tool.
Computer Science departments are out to teach concepts, not memetic fads. So they pick the best tool that solves that problem. That's why MIT used Scheme for so long. The modern language pantheon offers a lot of choice and therein perhaps lies the final answer. The internet has made it very easy to design, build and market a language. It can provide an ecosystem for you but it also provide a host of competitors. Which do you choose if you are teaching CS? The new hotness that may burn out soon? Which one? Why or why not? Most "fixer" languages are aimed at programmer productivity, not academic learning. And even with industrial usage, would you rather spend 6 months retraining your guys to Newfangled? I'd suspect you'd rather spend 6 months using the C++ you already have a team for and make money. Because that's the problem set in business. How do I make money faster than my rivals? I use proven technology run by smart people. So I can hired more smart people versed in proven technologies to write more code that makes me more money so I can hire even more smart people and pretty soon I have an R&D budget so I can indulge in things like exotic paradigms in Newfangled. But I'm still running in an "old" ecosystem. Because it works.
It just works.