This document summarizes a workshop on programming paradigms. It defines programming paradigms as fundamental styles of computer programming that serve as patterns or models for programming languages. The workshop covers various programming concepts like eager vs lazy evaluation, procedures vs functions, external vs internal state, concurrency, and static vs dynamic typing. It also uses examples like searching and higher order functions to illustrate differences between paradigms like Java vs Prolog and Java vs Haskell.