This text presents topics relating to the design and implementation of programming languages as fundamental skills that all computer scientists should possess. Rather than provide a feature-by-feature examination of programming languages, the author discusses programming languages organized by concepts.