CSC447

Concepts of Programming Languages

Course Overview

Instructor: James Riely

Learning Goals

  • Become a better programmer
  • Understand PLs implementation
  • Know the lingo!
  • Be able to choose PL for a purpose
  • Be able to craft a small PL

PL Concepts

  • Scanning, Parsing, Analysis, Intermediate Representation, Optimization, Code Generation
  • Virtual Machine, Just-In-Time Compiler
  • Scope, Lifetime, Closures, Call-By-Value, Call-By-Name
  • Stack, Heap, Garbage Collection, Reference Counting, Borrow Checking
  • Static/Dynamic Types, Single/Multiple Inheritance, Mixins, Subtyping, Parametric Polymorphism
  • Static/Dynamic Dispatch (Early/Late Binding), Vtables, Multi-methods
  • List Comprehensions, Pattern Matching

Course Overview

  • Implement an interpreter in Java
  • Programming paradigms and styles in Scala (and possibly Javascript)
    • functional vs object-oriented
    • mutability vs immutability
    • iteration vs recursion
    • pattern matching vs visitor design pattern

Discussion Forum

  • Get the discord native app
  • Discord supports Markdown formatting
  • Join the class server using the link at the bottom of the course homepage.
  • Use appropriate language
  • Use your real first name and last name.

Course Syllabus