This document provides an overview of principles of programming languages including the importance of studying programming languages, a brief history of programming languages, and an introduction to major programming paradigms. It discusses how studying programming languages can improve algorithm development, use of existing languages, vocabulary of programming constructs, and ability to choose and learn new languages. It then reviews the evolution of programming languages from machine language to early languages like Fortran, ALGOL, COBOL, and PL/I through modern languages like C, C++, Java, and Python.