Issues of programming language design including data abstraction, concurrency, exception handling, subprograms, data types, control structures, and describing syntax and semantics. Alternative paradigms such as imperative, functional, logic, and object-oriented.