1

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!

  • 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. – Fureeish Apr 16 '22 at 11:01
  • Thanks! This is roughly the kind of delay I would imagine between its emergence in industry and being written into syllabuses – WobbleMeister Apr 16 '22 at 11:05
  • 3
    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 Apr 16 '22 at 14:43
  • 2
    @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 Apr 18 '22 at 18:11
  • @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 Apr 18 '22 at 18:12
  • @ggorlen just curiosity really (piqued by related research into educational tools for helping students with mulithreading in Java) – WobbleMeister Apr 18 '22 at 21:09
  • I did it as a student circa 1991-1995 – ctrl-alt-delor Apr 20 '22 at 10:00
  • @ctrl-alt-delor was it as part of an OS architecture module, or a programming module? – WobbleMeister Apr 20 '22 at 10:02
  • @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 Apr 20 '22 at 10:03
  • @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 Apr 20 '22 at 10:05
  • @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 Apr 20 '22 at 10:26
  • 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 May 11 '22 at 15:10

0 Answers0