I was a freshman CS student in 2010-2011 and we learned multi-threaded programming in our first year.
- a way to avoid blocking the UI,
- tool to gain some perf. on new fancy multi-core processors,
- making the code much harder to read and debug, which often makes them a victim in a cost-benefit analysis.
There were in fact attempts for new concurrency paradigms (like Software Transactional Memory) which however led nowhere outside academia.
So what are some other ways of handling multi-core code that you were taught?