The Web, originally intended to be an open document-sharing platform, has evolved into a distributed platform for the deployment and execution of applications, to the point that it can now be viewed as a sort of global operating system (the programmable web). It has also become a "social machine" and a technological infrastructure for collective intelligence, which constitutes an interesting and complex subject of study. The objective of this course is to provide a comprehensive introduction to the architecture, standards, languages, and models that allow this huge distributed system to function, without forgetting its societal impact.