Because a lot of companies have moved on to NoSQL databases and key value stores.
> * Concurrent Programming
Because many languages use lightweight threads (fibers, coroutines, etc.) now that don't involve context switching.
> * Network Programming
Because these days barely any company does anything beyond web requests and nobody implements these from scratch. No DNS lookups, no ACKs, no manual buffer writing and reading, no marshalling, etc.
> Because a lot of companies have moved on to NoSQL databases and key value stores.
The value of learning database systems is learning how to model and represent data. All entirely relevant to NoSQL and key value stores.
> Because many languages use lightweight threads (fibers, coroutines, etc.) now that don't involve context switching
Concurrent programming is everywhere. It is not just something that has to do with threads. Even a simple CRUD app with a React front-end and DB back-end is a concurrent system. If your ever used a Promise or async/await in JS, you're dealing with concurrency.
> barely any company does anything beyond web requests
You still need the basics and at least an understand of what DNS is, what a firewall is, etc.
No one here is saying that graduates need to have mastered all of these different areas. But they should at least be able to recognise them when they hit problem later on in their careers. I've worked with junior web developers in the past who had no idea that they're working with a concurrent system.
Because a lot of companies have moved on to NoSQL databases and key value stores.
> * Concurrent Programming
Because many languages use lightweight threads (fibers, coroutines, etc.) now that don't involve context switching.
> * Network Programming
Because these days barely any company does anything beyond web requests and nobody implements these from scratch. No DNS lookups, no ACKs, no manual buffer writing and reading, no marshalling, etc.