CS107: Programming Paradigms (Stanford Univ.). Taught by Professor Jerry Cain, this course introduces several programming languages,
including C, Assembly, C++, Concurrent Programming, Scheme, and Python. The class aims to teach students how to write code for each of
these individual languages and to understand the programming paradigms behind these languages. Topics: Advanced memory management features of
C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming
(using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#.
(from see.stanford.edu)
Lecture 17 - Review of the Dining Philosopher Problem, Practical Applications of Threading