Today’s industry demands applications that can handle thousands of users and analyze terabytes of data expeditiously. To achieve this, software is moving from an object-oriented paradigm to a functional paradigm. By utilizing concurrency and parallelism to leverage multiple cores, programmers can achieve radical improvements in their applications. Fortunately, both paradigms can and should coexist. During this talk we will discuss several different concurrency programming models, analyze the pros and cons of each, and suggest their best use. You will learn how to exploit the parallelism in your computer’s GPU and leverage clusters of machines with MapReduce and Stream Processing. Moreover, you will learn how functional programming addresses issues with traditional threads and locks development. Software Transactional Memory (STM) will be discussed with code samples, as well as message passing using channels and useful design patterns like produce and consumer, distribute and conquer, and pipeline. By the end of the session, you will leave with a solid understanding of the different concurrent programming models, and be able to leverage them to increase the performance of your programs.