Body: <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>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-16T11:01:59.177Z
Comments.Text: 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.
Comments.UserDisplayName: Fureeish
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-16T11:05:39.907Z
Comments.Text: Thanks! This is roughly the kind of delay I would imagine between its emergence in industry and being written into syllabuses
Comments.UserDisplayName: WobbleMeister
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-16T14:43:02.350Z
Comments.Text: 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.
Comments.UserDisplayName: Solomon Slow
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-18T18:11:04.217Z
Comments.Text: @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.
Comments.UserDisplayName: ggorlen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-18T18:12:27.547Z
Comments.Text: @WobbleMeister Just for context, what are you trying to understand or infer based on the answers to this question, or is it pure curiosity?
Comments.UserDisplayName: ggorlen
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-18T21:09:56.113Z
Comments.Text: @ggorlen just curiosity really (piqued by related research into educational tools for helping students with mulithreading in Java)
Comments.UserDisplayName: WobbleMeister
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-20T10:00:22.077Z
Comments.Text: I did it as a student circa 1991-1995
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-20T10:02:18.290Z
Comments.Text: @ctrl-alt-delor was it as part of an OS architecture module, or a programming module?
Comments.UserDisplayName: WobbleMeister
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-20T10:03:55.140Z
Comments.Text: @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 )
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-20T10:05:56.820Z
Comments.Text: @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).
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-04-20T10:26:01.700Z
Comments.Text: @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
Comments.UserDisplayName: WobbleMeister
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-05-11T15:10:11.600Z
Comments.Text: 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.
Comments.UserDisplayName: codingCat
Tags: <concurrency>
Title: Multithreading in Programming modules
ThreadText: # 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**: @username_2 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**: @username_2 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
  
  