Principles of Programming Languages

Identifier
COMS 3420
Professor(s)

Last Updated: Spring 2025

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours: 3 credits, 4 contact hours
  2. Instructor’s or course coordinator’s name: Liyi Li
  3. Required Materials: Previous Lecture notes by Elsa Gunter and Liyi Li (Downloadable on Canvas)
  4. Other supplemental materials: 
    • Essentials of Programming Languages (2nd Edition) by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes, MIT Press 2001.
    • Compilers: Principles, Techniques, and Tools (also known as "The Dragon Book") by Aho, Sethi, and Ullman. Published by AddisonWesley. ISBN:0-201-10088-6. 
    • Modern Compiler Implementation in ML by Andrew W. Appel, Cambridge University Press 1998.

Specific course information

  1. Brief description of the content of the course: Study of concepts in programming languages, especially functional programming concepts. Overview of major programming paradigms, their relationship, and tradeoffs among paradigms enabling sound choices of programming language for application-specific development. Programming projects.
  2. Prerequisites or co-requisites: Minimum of C- in COMS 2280 and MATH 1650; COMS 2300 or CPRE 3100
  3. Required, elective, or selected elective? Required

Specific goals for the course

Upon completing this course, students will be able to do the following: 

  • New programming paradigm 
    • Functional programming 
    • Environments and Closures 
    • Patterns of Recursion
  • Typing 
    • Type systems
    • Unification Algorithms
    • Type Inferencing 
  • Programming Language Semantics 
    • Operational Semantics 
    • Lambda Calculus 
    • Hoare Logic

Brief list of topics to be covered

  • Program Environments
  • Program Evaluation Orders
  • Pattern Matching
  • Type Systems
  • Unifications
  • Program Semantics
  • Lambda Calculus
  • Axiomatic Semantics such as Hoare Logic