Episode #125 of the Stack Overflow podcast is here. We talk Tilde Club and mechanical keyboards. Listen now
10

If we don't introduce parallel/concurrent thinking early, our students can develop a sequential mindset that makes it hard for them to make the shift later. The rest of this is in the context of a college/university CS curriculum... Multithreading can be discussed in CS1 if the students build GUIs, since the GUI needs its own thread to maintain ...


9

One reason infinite loops are used could be so the problem can't be solved by letting one thread complete the code before the other thread starts it. With infinite loops, no thread ever completes the code. Of course, using a bounded buffer has the same effect.


5

We're introducing some aspects of parallel processing quite early on in Scratch. Each sprite has its own script which appears to execute in parallel with those of the others. Scratch has a broadcast and receive message protocol, and support for shared as well as private variables and lists. Children might encounter this in a maze game, perhaps programming ...


5

"processes that run and enter critical sections ... where the code is not in an infinite loop" Processes are generally components of a reactive system (like an OS) that are designed to be non-terminating (hopefully, otherwise we call it a "crash"!). So even if the code of the process doesn't contain an infinite loop, the process will be invoked an ...


3

Since the OP asked about functional programming, so I would highly recommend you to read "Learning Concurrent Programming in Scala" by Aleksandar Prokopec, (2014). All the examples for this book are available on GitHub to give you some idea of the book before you purchase it. C# I would recommend you to read "Professional Parallel Programming with C#" - ...


3

Concurrent programming is easy, synchronisation is hard. Have a look at this video for an alternative to synchronisation: https://www.youtube.com/watch?v=2yXtZ8x7TXw When you have to synchronize Use easy (High level) synchronization. see: Scoop from Eiffel. Transactions Pipelines / message passing coroutines (for when you don't need parallelisation) See ...


2

I do not see much value in teaching more than an appreciation of threads and locking, until you have covered less primitive techniques for parallelism. These techniques allow parallelism that scales beyond what threads and lock does, is easier to learn, and less prone to bugs. Functional programming: Pure functional programmes do not have the concept of ...


2

In UK at A-level We cover the following. Multi-core, semaphores, queues, process pipeline, SISD, MISD, SIMD, MIMD. We don't specifically cover how to write programs using these. A student could also get a good grade and know little about there.


2

Given the type of software development that occurs these days, such as on mobile phones and with "big data" technologies, I think concurrency, threading, etc. should be introduced very early. Basically as soon as you start talking about what a program is, how it's invoked or executed, and what happens when it completes, I would discuss all that in the ...


2

The Well Grounded Java Developer has an excellent section on concurrency. The author claims that very few developers correctly implement concurrency. As ctrl-alt-delor put it: concurrency is easy; synchronization is hard. In fact, avoiding errors from race conditions and unexpected asynchronous behavior is so difficult that the author recommends developers ...


2

I have no recommendations for the theory part but since you are asking for implementation advice as well, here we go. If you are looking to use C sharp (you haven't specified a specific language of choice) then, as a dot net guy myself, I would recommend you start your self learning on concurrent programming with .NET implementation of same at Threads and ...


Only top voted, non community-wiki answers of a minimum length are eligible