A summary of the fundamental concepts behind modern programming languages is provided by this course. Finding common syntactic and semantic programming language components, looking at how they appear in particular programming languages, and understanding similarities and differences that emerge in language implementations are the main goals. We'll look at imperative, object-oriented, concurrent, functional, and logic programming language paradigms.