BU CAS Computer Science 320
Concepts of Programming Languages









2013-09-03lecture:
languages
  • lecture notes
  • overview, motivation, & background
  • defining programming languages
  • syntax and BNF notation
2013-09-05lecture:
languages
2013-09-10lecture:
parsing
  • lecture notes
  • more on parsing algorithms
    • recursive descent parsers
      • predictive
      • backtracking
  • inference rule notation
  • operational semantics
2013-09-12lecture:
interpretation
& compilation
  • lecture notes
  • more on parser implementation
    • generic/parameterized
    • left factoring
  • more on operational semantics
2013-09-17lecture:
interpretation
& compilation
  • lecture notes
  • implementing interpreters
    • evaluation of expressions
      • formula constants
      • formula operators
2013-09-18
11:59 PM EDT
2013-09-19lecture:
interpretation
& compilation
  • lecture notes
  • implementing interpreters
    • evaluation of expressions
    • execution of statements
      • with side effects
    • environment/contexts
2013-09-24lecture:
interpretation
& compilation
  • lecture notes
  • implementing interpreters
    • evaluation of expressions
      • with variables
    • execution of statements
      • with variable assignment
      • with looping constructs
2013-09-26lecture:
interpretation
& compilation
  • lecture notes
  • implementing interpreters
    • execution of statements
      • with looping constructs
  • interpretation vs. compilation
  • example of a machine language
2013-10-01lecture:
interpretation
& compilation
  • lecture notes
  • compilation
    • history and background
    • formal definition
    • compiling expressions
2013-10-03lecture:
interpretation
& compilation
  • lecture notes
  • compilation
    • compiling expressions
      • with variables
    • compiling statements
      • with assignment
      • with procedures
2013-10-04
11:59 PM EDT
  • assignment #2 due
  • only 3 late days available
  • late penalty starts at 30 points
2013-10-08lecture:
interpretation
& compilation
  • lecture notes
  • compilation
    • compiling statements
      • with data structures
      • with procedure parameters
    • memory management
      • stack and heap
      • garbage collection
2013-10-10lecture:
interpretation
& compilation
  • lecture notes
  • machine language exercise
  • memory management
    • stack and heap
    • garbage collection
  • compiler optimizations
    • constant folding
    • loop unrolling
2013-10-15
Monday sched.
    2013-10-17lecture:
    static
    analysis
    • lecture notes
    • implementation correctness
      • test cases
      • bounded exhaustive testing
      • formal verification
    • static analysis
      • type checking
      • error reporting
    2013-10-18
    11:59 PM EDT
    • assignment #3 due
    • only 3 late days available
    • late penalty starts at 30 points
    2013-10-22lecture:
    static
    analysis
    2013-10-24lecture:
    static
    analysis
    • lecture notes
    • more on static analysis
      • liveness analysis
      • type checking
        • function types
        • size-annotated types
    2013-10-25
    midterm
    project due
    2013-10-29lecture:
    static
    analysis
    • lecture notes
    • more on type checking
    • more on abstract interpretation
    • programming paradigms
    2013-10-31lecture:
    declarative
    programming
    2013-11-05lecture:
    declarative
    programming
    • lecture notes
    • Haskell syntax & semantics
    • declarative programming
    • algebraic data types (ADTs)
    2013-11-07lecture:
    declarative
    programming
    2013-11-08
    11:59 PM EDT
    2013-11-12lecture:
    declarative
    programming
    • lecture notes
    • higher-order functions
    • type synonyms
    • encapsulation using ADTs
    • built-in Haskell type classes
    2013-11-14lecture:
    functional
    programming
    • lecture notes
    • more Haskell examples
    • state space search
      • representing state spaces
      • comparing states
      • optimizing choice of state
    2013-11-19lecture:
    functional
    programming
    • lecture notes
    • state space search
      • optimizing choice of state
      • building up algorithms
    • polymorphism
      • ad-hoc (overloading)
      • parametric
    2013-11-21lecture:
    functional
    programming
    2013-11-23
    11:59 PM EDT
    • assignment #5 due
    • only 4 late days available
    • late penalty starts at 20 points
    2013-11-26lecture:
    algebra of
    programming
    • lecture notes
    • defining modules
    • defining type classes
    • folds and unfolds
    • λ-calculus
    2013-11-28recess
      2013-12-03lecture:
      algebra of
      programming
      • lecture notes
      • folds, maps, and λ abstractions
        • in Haskell
        • in Python
        • in JavaScript
        • in database languages
      2013-12-05lecture:
      algebra of
      programming
      • exploiting algebraic properties
        • refactoring
        • optimization
        • distributed/web programming
      2013-12-06
      11:59 PM EDT
      2013-12-10lecture:
      review
      2013-12-13
      11:59 PM EDT
      final
      take-home
      portion due
      2013-12-16
      Mon.
      12:30-2:30 PM
      CAS 316
      final
      in-class
      exam