Concurrent constraint programming is a model that combines ideas from concurrent and constraint logic programming. The lectures will focus on concurrent programming and will present three different concurrent extensions of the functional programming language ML, using channels, logic variables, and futures, respectively. The extensions with logic variables and futures subsume the expressivity of concurrent logic programming. We will discuss the differences between the three approaches and study a number of concurrent programming abstractions.