Course CSE307
Title Principles of Programming Languages
Credits 3
Course Coordinator

C.R. Ramakrishnan


An introduction to programming languages paradigms, including functional and logic programming, and the suitability of various languages for particular programming tasks. Students write sample programs in the studied languages. The languages are used to illustrate programming language constructs such as scoping and binding, type systems, storage management and operating environments. This illustration is accompanied by an introduction to the implementation of programming languages, such as parsing, semantic analysis, symbol tables, memory allocation and code generation. Students complete a series of assignments to implement a language chosen by the instructor.

Bulletin Link

Prerequisite C or higher: CSE 216 or CSE 260; CSE 220; CSE major.
Course Outcomes
  • An ability to program in different language paradigms and evaluate their relative benefits.
  • Knowledge of, and an ability to use, language features used in current programming languages.
  • An understanding of the key concepts in the implementation of common features of programming languages.
  • Working knowledge of the major phases of implementing a programming language.

Michael Scott, Programming Language Pragmatics, 4th ed., Morgan Kaufmann, 2015.

Major Topics Covered in Course
  • Principles of Language Design
  • Specification of Language Syntax
  • Survey of Procedural and OO Languages
  • Intro. to Functional Programming
  • Intro. to Logic Programming
  • Programming Language Semantics
  • Values
  • Bindings
  • Types
  • Programming Language Constructs
  • Expressions
  • Statements
  • Procedures and Environments
  • Parameter Passing
  • Syntax and grammars, 1 week
  • Functional Programming, 2 weeks
  • Logic Programming, 2 weeks
  • Programming Language Semantics, 2 weeks
  • Run-time Structures: Interpreters, 2 weeks
Course Webpage