CIS 505: Programming Languages

Prerequisite Topics

  • Data Structures: Arrays, stacks, lists, queues, trees
  • Induction and recursion
  • Functional and/or object-oriented programming
  • Basic propositional logic, predicate logic, program logic (e.g., Hoare logic)
  • Basic set theory, and reading and writing mathematical proofs

Goals

  • Mastery of programing language concepts including type, scope and extent, abstraction mechanisms and control.
  • Knowledge of programming paradigms, including one or more of logic, functional and object-oriented programming, and programming languages supporting the selected paradigms.
  • Mastery of techniques for implementing interpreters, compilers and virtual machines for the paradigmatic languages studied in the course.
  • Knowledge of storage management and some techniques for garbage collection
  • Mastery of type checking and type inference techniques for the paradigmatic languages studied in the course.