Course description: Fundamental concepts in programming languages. Several high-level languages are studied in depth and their approaches to the fundamental issues in language design are compared. Issues include: data types and structures, control structures, binding times, run-time storage organization, flexibility vs. efficiency, compiled vs. interpreted languages, strong vs. weak typing, block structure and scope of names.