<p>Bit of a flimsy question, but here goes...</p>
<p>My understanding is that multithreading is now a staple of the vast majority of university comp sci programming modules (where the programming language being taught has support for multithreading). Given that multithreading has really only come into its own in the past 20 years or so, since the advent of multicore processors, I'm wondering if anyone knows the rate at which multithreading became a standard subject covered in programming modules (i.e. the implementation and analysis of small multithreaded programs, as opposed to the high-level study of it in an OS architecture module, for example). Did it take a while for universities' syllabuses to catch up?</p>
<p>Answers based on personal experience only are fully welcome!</p>

CC BY-SA 4.0
2022-04-16T11:01:59.177Z
Can't speak for any other university since I hadn't done any research in that regard, but it has been present in my university since around year 2000.
Fureeish
CC BY-SA 4.0
2022-04-16T11:05:39.907Z
Thanks! This is roughly the kind of delay I would imagine between its emergence in industry and being written into syllabuses
WobbleMeister
CC BY-SA 4.0
2022-04-16T14:43:02.350Z
I think it's an interesting question. I waste a lot of hours reading questions about multithreading on StackOverflow, and many of them seek help with homework assignments that seem to come from instructors who have only a weak understanding of how to use threads. (E.g., the student is asked to make two or more threads take turns performing some set of tasks such that the tasks are performed sequentially, and in a strictly specified order.) I would love to hear how educators discuss teaching threads.
Solomon Slow
CC BY-SA 4.0
2022-04-18T18:11:04.217Z
@SolomonSlow in my experience, it's not just multithreading that's taught with poor examples in CS. Recursion, OOP, design patterns and all manner of other CS concepts are often presented in ways that are misapplied and contrived, leaving students with an unclear motivation for why the tool exists, what class of problems it's supposed to solve, or when to use it effectively.
ggorlen
CC BY-SA 4.0
2022-04-18T18:12:27.547Z
@WobbleMeister Just for context, what are you trying to understand or infer based on the answers to this question, or is it pure curiosity?
ggorlen
CC BY-SA 4.0
2022-04-18T21:09:56.113Z
@ggorlen just curiosity really (piqued by related research into educational tools for helping students with mulithreading in Java)
WobbleMeister
CC BY-SA 4.0
2022-04-20T10:00:22.077Z
I did it as a student circa 1991-1995
ctrl-alt-delor
CC BY-SA 4.0
2022-04-20T10:02:18.290Z
@ctrl-alt-delor was it as part of an OS architecture module, or a programming module?
WobbleMeister
CC BY-SA 4.0
2022-04-20T10:03:55.140Z
@SolomonSlow yes. Too much emphasis on no synchronisation of threads (or how to make your complex multi-threaded come more complex and perform like sequential code). Not enough no techniques that make it simple (no mutation / functional programming, pipes, etc )
ctrl-alt-delor
CC BY-SA 4.0
2022-04-20T10:05:56.820Z
@WobbleMeister I did it as a student circa 1991-1995: Partly as OS architecture, partly programming with libraries (probably in the OS arch module), and partly programming with a specialist language (I am not sure that many of us did this last one).
ctrl-alt-delor
CC BY-SA 4.0
2022-04-20T10:26:01.700Z
@ctrl-alt-delor maybe not, but it's useful to me to know that it was an option available to you in the early 90s! Thank you
WobbleMeister
CC BY-SA 4.0
2022-05-11T15:10:11.600Z
Just to provide you a little more data... threading was introduced to me for the first time fifteen years ago as part of my undergraduate Programming 3 course. I was familiar with multitasking all the way back in the mid-80s and write code that was part of a cooperative multitasking system in the mid-90's. As a current CS teacher at the high school level, I introduce the topic of threading to my post APCS-A students.
codingCat
<concurrency>
Multithreading in Programming modules
# Multithreading in Programming modules

(Asked by: username_0 on 2022-04-16)

Bit of a flimsy question, but here goes...

My understanding is that multithreading is now a staple of the vast majority of university comp sci programming modules (where the programming language being taught has support for multithreading). Given that multithreading has really only come into its own in the past 20 years or so, since the advent of multicore processors, I'm wondering if anyone knows the rate at which multithreading became a standard subject covered in programming modules (i.e. the implementation and analysis of small multithreaded programs, as opposed to the high-level study of it in an OS architecture module, for example). Did it take a while for universities' syllabuses to catch up?

Answers based on personal experience only are fully welcome!

**Tags:** concurrency

> **Comments:**
> **username_1**: Can't speak for any other university since I hadn't done any research in that regard, but it has been present in my university since around year 2000.  
> **username_0**: Thanks! This is roughly the kind of delay I would imagine between its emergence in industry and being written into syllabuses  
> **username_2**: I think it's an interesting question. I waste a lot of hours reading questions about multithreading on StackOverflow, and many of them seek help with homework assignments that seem to come from instructors who have only a weak understanding of how to use threads. (E.g., the student is asked to make two or more threads take turns performing some set of tasks such that the tasks are performed sequentially, and in a strictly specified order.) I would love to hear how educators discuss teaching threads.  
> **username_3**: @SolomonSlow in my experience, it's not just multithreading that's taught with poor examples in CS. Recursion, OOP, design patterns and all manner of other CS concepts are often presented in ways that are misapplied and contrived, leaving students with an unclear motivation for why the tool exists, what class of problems it's supposed to solve, or when to use it effectively.  
> **username_3**: @username_0 Just for context, what are you trying to understand or infer based on the answers to this question, or is it pure curiosity?  
> **username_0**: @username_3 just curiosity really (piqued by related research into educational tools for helping students with mulithreading in Java)  
> **username_4**: I did it as a student circa 1991-1995  
> **username_0**: @username_4 was it as part of an OS architecture module, or a programming module?  
> **username_4**: @SolomonSlow yes. Too much emphasis on no synchronisation of threads (or how to make your complex multi-threaded come more complex and perform like sequential code). Not enough no techniques that make it simple (no mutation / functional programming, pipes, etc )  
> **username_4**: @username_0 I did it as a student circa 1991-1995: Partly as OS architecture, partly programming with libraries (probably in the OS arch module), and partly programming with a specialist language (I am not sure that many of us did this last one).  
> **username_0**: @username_4 maybe not, but it's useful to me to know that it was an option available to you in the early 90s! Thank you  
> **username_5**: Just to provide you a little more data... threading was introduced to me for the first time fifteen years ago as part of my undergraduate Programming 3 course. I was familiar with multitasking all the way back in the mid-80s and write code that was part of a cooperative multitasking system in the mid-90's. As a current CS teacher at the high school level, I introduce the topic of threading to my post APCS-A students.  

---

## 0 answers

