This list is written in no particular order :)
This week will list more material outside the scope of the course material.
This is a video from Computerphile that explains multiprocessor systems. This video discusses why we have multiple cores and it also touch a lof of things in parallelism and concurrency including SIMD.
This is also a video from Computerphile. This time, Computerphile explains multithreading code and the gotchas we could encounter doing so.
This links to a Haskell Book discussing concurrent programming in Haskell. While there are elements in Haskell multicore programming that are completely the same compared with other languages, the ease that immutability and Haskell Functional Programming’s nature brought to concurrent programming is kinda stunning.
This links to an explanation as to the difference between a fork and a thread. Pretty basic but really useful link to understand the concepts.
This has been long on my bookmark list. This links explain concurrency in Python and how it is implemented. It is a pretty interesting read and given that Python is limited by its Global Interpreter Lock, this is a nice overview to concurrency in such way.
I stumbled upon this question accidentally (by misclicking :/) but it turns out that this is a fun read. This links to a question-answer thread that discusses where does the operating system/kernel run (in a multiprocessor system, which core/processor).
This links to a TechQuickie video (by Linus Media Group) that explains hyper-threading which is Intel version of simultaneous multithreading quite concisely and with good analogy.
WHy are GPUs more powerful than CPUS? This question is pretty flawed but the answers inside this question-answer thread is pretty interesting. This really shows that parallelism in specific workloads help tremendously.
This links to a page explaining how to manage process affinity in Linux, that is assigning which core does a thread run on. It is a nice and very practical read.
This links to a question-answer thread explaining what is ‘niceness’ and ‘priority’ with regards to a process. This is a good practical read that discuss historical contexts too.