BU CAS Computer Science 320
Concepts of Programming Languages









2015-01-20lecture:
languages
  • lecture notes
  • background & motivation
  • defining programming languages
    • sets of character strings
    • regular expressions
    • examples with regular expressions
    • sets of token sequences
    • syntax and BNF notation
2015-01-22lecture:
languages
  • lecture notes
  • more on syntax and BNF notation
  • concrete and abstract syntaxes
  • abstract syntax trees
  • lexing and parsing
2015-01-27
    2015-01-29lecture:
    interpretation
    & compilation
    • lecture notes
    • more on parsing algorithms
    • recursive descent parsers
      • predictive
      • backtracking
    • grammars & parser implementation
      • left factoring
      • elimination of left recursion
    2015-02-02
    11:59 PM EST
    assignment
    • assignment #1 due
    • now due Tuesday, 2015-02-03
    • late penalties also shift by one day
    2015-02-03lecture:
    interpretation
    & compilation
    • lecture notes
    • review of parsing
    • operational semantics
    • inference rules
    • evaluation of expressions
    2015-02-05lecture:
    interpretation
    & compilation
    • lecture notes
    • flow of control
    • side effects
    • execution of statements
      • environments/contexts
      • with variable assignment
      • with looping constructs
    2015-02-10
      2015-02-12lecture:
      interpretation
      & compilation
      • lecture notes
      • compilation
        • history and background
        • formal definition
        • interpretation vs. compilation
      • example of a machine language
      2015-02-17
      Monday sched.
      11:59 PM EST
      assignment
      2015-02-19lecture:
      interpretation
      & compilation
      • lecture notes
      • machine language programs
      • heap management
      • compiling expressions
      2015-02-24lecture:
      interpretation
      & compilation
      • lecture notes
      • compiling statements
        • with procedures and calls
        • with assignment
      • compiling expressions
        • with variables
      • compiler optimizations
        • loop unrolling
        • constant folding
      2015-02-26lecture:
      interpretation
      & compilation
      • lecture notes
      • register allocation
        • interference graph
        • graph coloring
        • single static assignment
      • compiling procedures
        • with procedure parameters
        • with local variables
        • with data structures
      2015-03-03lecture:
      static
      analysis
      • lecture notes
      • implementation correctness
        • test cases
        • bounded exhaustive testing
      • static analysis
        • type checking
        • error reporting
      2015-03-04
      11:59 PM EDT
      assignment
      2015-03-05lecture:
      static
      analysis
      • lecture notes
      • type checking
        • with variables
        • with functions
        • with looping constructs
        • with size annotations
      • abstract interpretation
      2015-03-10recess
        2015-03-12recess
          2015-03-17lecture:
          declarative
          programming
          • lecture notes
          • review
          • programming language paradigms
          • declarative languages
          • substitution & unification
          2015-03-19lecture:
          declarative
          programming
          • lecture notes
          • more on substitution & unification
          • Haskell syntax & semantics
          • declarative programming
          • algebraic data types (ADTs)
          2015-03-23
          11:59 PM EDT
          take-home
          midterm due
          2015-03-24lecture:
          declarative
          programming
          • lecture notes
          • semantics of a declarative language
          • more Haskell examples
          • Haskell type system
          • type synonyms
          • infinitely large values
          2015-03-26lecture:
          declarative
          programming
          • lecture notes
          • logic programming
          • higher-order functions
          • function types
          • data encapsulation using ADTs
          2015-03-31lecture:
          declarative
          programming
          • lecture notes
          • built-in Haskell type classes
          • defining and overloading operators
          • embedded languages
          • more Haskell features and examples
          2015-04-02lecture:
          declarative
          programming
          • lecture notes
          • composition of functions
          • list comprehensions
            • with pattern matching
          • state space search
            • representing state spaces
            • comparing states
          2015-04-03
          11:59 PM EDT
          assignment
          2015-04-07lecture:
          declarative
          programming
          • lecture notes
          • defining modules
          • polymorphism
            • ad-hoc (overloading)
            • parametric
            • defining type classes
          • type inference & unification
          2015-04-09lecture:
          functional
          programming
          • lecture notes
          • folds and unfolds
          • map and filter
          • λ abstractions
          • database languages
          2015-04-14lecture:
          functional
          programming
          • review for quiz
          • more on folds and unfolds
          2015-04-16lecture:
          functional
          programming
          • lecture notes
          • folds and maps for datatypes
          • lifting and joining
          • composing monadic functions
          2015-04-17
          11:59 PM EDT
          assignment
          2015-04-21lecture:
          algebra of
          programming
          • exploiting algebraic properties
            • idempotency and monotonicity
            • commutativity and associativity
            • composition
          2015-04-23lecture:
          algebra of
          programming
            2015-04-28lecture:
            review
            2015-04-30
            Thursday
            12:35-1:55 PM
            in-class
            exam
              2015-05-08
              11:59 PM EDT
              take-home
              project due