Skip to main content
CourseadvancedFree

Operating Systems: Three Easy Pieces

Remzi & Andrea Arpaci-Dusseau

Learn concurrency in operating systems with this course from Remzi & Andrea Arpaci-Dusseau, based on "Operating Systems: Three Easy Pieces."

Visit resource

More resources on Concurrency

WebsiteFree

CS140 Concurrency Notes (Stanford)

Lecture notes and resources

CourseFree

Operating System Engineering

Learn concurrency in operating systems with this course by Frans Kaashoek. Explore OS engineering principles at MIT OCW.

CourseFree

CS162: Operating Systems and Systems Programming

Explore concurrency and systems programming with UC Berkeley's CS162 course, taught by Ion Stoica et al. Build powerful, efficient operating systems!

BookFree

The Art of Multiprocessor Programming

The Art of Multiprocessor Programming - A book resource

WebsiteFree

geeksforgeeks.org

GeeksforGeeks is a programming education site offering tutorials, articles, and practice problems on computer science topics, including extensive coverage of concurrency with guides on multithreading, synchronization, and language-specific APIs plus code examples.

CourseFree

Concurrent Programming

This course teaches learners (industry professionals and students) the fundamental concepts of concurrent programming in the context of Java 8. Concurrent programming enables developers to efficiently and correctly mediate the use of shared resources in parallel programs. By the end of this course, you will learn how to use basic concurrency constructs in Java such as threads, locks, critical sections, atomic variables, isolation, actors, optimistic concurrency and concurrent collections, as well as their theoretical foundations (e.g., progress guarantees, deadlock, livelock, starvation, linearizability). Why take this course? β€’ It is important for you to be aware of the theoretical foundations of concurrency to avoid common but subtle programming errors. β€’ Java 8 has modernized many of the concurrency constructs since the early days of threads and locks. β€’ During the course, you will have online access to the instructor and mentors to get individualized answers to your questions posted on the forums. β€’ Each of the four modules in the course includes an assigned mini-project that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends. The desired learning outcomes of this course are as follows: β€’ Concurrency theory: progress guarantees, deadlock, livelock, starvation, linearizability β€’ Use of threads and structured/unstructured locks in Java β€’ Atomic variables and isolation β€’ Optimistic concurrency and concurrent collections in Java (e.g., concurrent queues, concurrent hashmaps) β€’ Actor model in Java Mastery of these concepts will enable you to immediately apply them in the context of concurrent Java programs, and will also help you master other concurrent programming system that you may encounter in the future (e.g., POSIX threads, .NET threads).

See all Concurrency resources β†’