Programming languages are essential tools for developing software systems. The principals of programming language design are necessary infrastructural element that help students build strong programming skills. This course provides introduction to the design and implementation of programming languages and explores the principles, algorithms, and data structures involved in the design and construction of compilers. Topics include elements of programming languages, syntax, semantics, lexical analysis, context-free grammars, and code parsing techniques. Prerequisite: Grade of C or better in Computer Science 315. 01/15/2020-05/06/2020 Lecture Monday, Wednesday, Friday 01:00PM - 01:50PM, Room to be Announced