This course is about the basics of multithreading and concurrent programming with some parallel concepts. In the 21st century this topic is becoming more and more popular with the advent of Big Data and Machine Learning. We will consider the low level concepts such as threads, synchronization andlocks. The second chapter will be about concurrent library: of course there are built in classes and interfaces that we can use when implementing multithreaded applications. Then we develop little programs as show-cases for multithreading: the dining-philosopher problem and the students in library simulation. Last chapter is about parallel computing and MapReduce. Section 1 - Multithreading Theory: theory behind multithreadingpros and cons of multithreadinglife cycle of a theadSection 2 - Threads Manipulation: starting threads (Runnable interface and Thread class)join keyworddaemon threadsSection 3 - Inter-Thread Communication: memory management of threadssynchronization and synchronized blockslockswait and notifyproducer-consumer problem and solutionconcurrent collectionslatch, cyclic barrier and blocking queuesdelay queue, priority queue and concurrent mapsSection 4 - Multithreading Concepts: volatile keywordsdeadlocks and livelockssemaphores and mutexesdining philosophers problemlibrary applicationSection 6 - Executors and ExecutorServices: executorsexecutor servicesSection 6 - Concurrent Collections: synchronization with Collectionslatchescyclic barriersdelay and priority queuesconcurrent HashMapsCopyOnWriteArrayListsSection 7 - Simulations: dining philosophers problemlibrary problemSection 8 - Parallel Algorithms: what is parallel computingparallel merge sortparallel algorithmsSection 9 - Fork-Join FrameworkFork-Join frameworkmaximum finding in parallel mannerSection 10 - Stream APIthe Stream API explained with examplessequential streams and parallel streamsSection 11 - BigData and MapReduce: what is MapReduceMapReduce and Fork-Join frameworkThanks for joining my course, let’s get started!