BU CAS Computer Science 320
Concepts of Programming Languages









2014-09-02lecture:
languages
  • lecture notes
  • overview, motivation, & background
  • defining programming languages
    • sets of character strings
    • regular expressions
    • sets of token sequences
    • syntax and BNF notation
2014-09-04lecture:
languages
  • lecture notes
  • examples with regular expressions
  • more on syntax and BNF notation
  • concrete and abstract syntaxes
  • abstract syntax trees
  • lexing and parsing
2014-09-09lecture:
parsing
  • lecture notes
  • more on parsing algorithms
  • recursive descent parsers
    • predictive
    • backtracking
2014-09-11lecture:
interpretation
& compilation
  • lecture notes
  • more on parser implementation
    • left factoring
    • elimination of left recursion
  • operational semantics
  • inference rules
  • evaluation of expressions
2014-09-15
11:59 PM EDT
assignment
2014-09-16lecture:
interpretation
& compilation
  • lecture notes
  • implementing interpreters
    • evaluation of expressions
    • execution of statements
      • control flow
      • environments/contexts
      • side effects
2014-09-18lecture:
interpretation
& compilation
  • lecture notes
  • execution of statements
    • environments/contexts
    • with variable assignment
    • with looping constructs
2014-09-23lecture:
interpretation
& compilation
  • lecture notes
  • compilation
    • history and background
    • formal definition
    • interpretation vs. compilation
  • example of a machine language
2014-09-25lecture:
interpretation
& compilation
2014-09-29
11:59 PM EDT
assignment
  • assignment #2 due
  • first day late penalty waived
  • late penalty starts at 20 points
2014-09-30lecture:
interpretation
& compilation
  • lecture notes
  • compiling expressions
    • with variables
  • compiling statements
    • with assignment
    • with procedures
2014-10-02lecture:
interpretation
& compilation
  • lecture notes
  • register allocation
    • interference graph
    • graph coloring
    • single static assignment
  • compiler optimizations
    • loop unrolling
    • constant folding
2014-10-07lecture:
interpretation
& compilation
  • compiling comprehensions
  • compiling procedures
    • with procedure parameters
    • with local variables
    • with data structures
  • memory management
    • stack and heap
    • garbage collection
2014-10-09lecture:
interpretation
& compilation
  • lecture notes
  • implementation correctness
    • test cases
    • bounded exhaustive testing
    • formal verification
  • static analysis
    • type checking
    • error reporting
2014-10-14
Monday sched.
    2014-10-16lecture:
    static
    analysis
    2014-10-20
    11:59 PM EDT
    assignment
    2014-10-21lecture:
    static
    analysis
    • lecture notes
    • more on type checking
    • type checking with size annotations
    • review
    2014-10-23lecture:
    static
    analysis
    • lecture notes
    • type checking with size annotations
    • abstract interpretation
    • programming language paradigms
    2014-10-28lecture:
    static
    analysis
    2014-10-29
    11:59 PM EDT
    take-home
    midterm due
    • midterm posted
    • now due 11:59 PM, 2014-10-30
    • as before, no late submissions
    2014-10-30lecture:
    declarative
    programming
    • lecture notes
    • more on substitution & unification
    • Haskell syntax & semantics
    • declarative programming
    • algebraic data types (ADTs)
    2014-11-04lecture:
    declarative
    programming
    • lecture notes
    • more Haskell examples
    • semantics of a declarative language
    2014-11-06lecture:
    declarative
    programming
    • lecture notes
    • Haskell type system
    • type synonyms
    • infinitely large values
    2014-11-11lecture:
    declarative
    programming
    • lecture notes
    • logic programming
    • higher-order functions
    • function types
    2014-11-12
    11:59 PM EDT
    assignment
    2014-11-13lecture:
    functional
    programming
    • lecture notes
    • data encapsulation using ADTs
    • built-in Haskell type classes
    • defining and overloading operators
    • embedded languages
    2014-11-18lecture:
    functional
    programming
    • lecture notes
    • more Haskell features and examples
    • list comprehensions
      • with pattern matching
    • state space search
    2014-11-20lecture:
    functional
    programming
    • lecture notes
    • state space search
      • representing state spaces
      • comparing states
      • optimizing choice of state
    2014-11-25lecture:
    algebra of
    programming
    2014-11-26
    11:59 PM EDT
    assignment
    2014-11-27recess
      2014-12-02lecture:
      algebra of
      programming
      • lecture notes
      • polymorphism
        • ad-hoc (overloading)
        • parametric
      • type inference & unification
      2014-12-04lecture:
      review
      2014-12-09
      Tuesday
      12:35-1:55 PM
      in-class
      exam
        2014-12-17
        11:59 PM EDT
        take-home
        project due