CPS 343/543: Comparative Languages Lecture Notes


  1. Fundamentals ([EOPL] Preface,Ch1)
    1. introduction, course objectives and outline, and programming language paradigms
    2. formal languages and grammars (Backus-Naur form) (§1.1)
    3. recursive programming in Scheme (λ-calculus and S-expressions) (§1.2)
    4. variable binding and scope (§1.3)

  2. Data abstraction ([EOPL] Ch2)
    1. inductive data types and abstract syntax (§§2.1-2.2)
    2. representation strategies (list, abstract syntax, and procedural) (§§2.3-2.4)

  3. Environment-passing interpreters ([EOPL] Ch3, [PIH] Ch4,5,12)
    1. front end, conditional evaluation, and local binding (§§3.1-3.4) [The Roots of LISP]
    2. procedures and closures (§3.5)
    3. recursion (§3.6)
    4. variable assignment (§3.7)
    5. parameter-passing mechanisms (§3.8)
    6. lazy evaluation and thunks (call-by-name and call-by-need; [EOPL] §3.8)
    7. lazy evaluation in Haskell [installing & using HUGS98] ([PIH] Ch4,5,12)
    8. statements and side effects (§3.9)

  4. Types ([EOPL] Ch4, [PIH] Ch3,7,10, [EMLP] Ch3,5,6,8, [TLML])
    1. strong typing, type inference, and currying ([PIH] Ch3,7, [EMLP] Ch3,5) [installing & using SML-NJ]
    2. type systems (in Haskell; [PIH] Ch10 and ML [structures, signatures, and functors]; [EMLP] Ch6,8)

  5. Control ([EOPL] pp. 241-243, §8.1, [TSPL] §§3.2-3.4, [TSS] Ch13,19)
    1. continuations and call/cc [about continuations] ([TSPL] §3.3, [TSS] Ch13)
    2. tail calls ([EOPL] pp. 241-243, [TSPL] §3.2) and continuation-passing style ([EOPL] §8.1, [TSPL] §3.4, [TSS] Ch19)

  6. Logic programming ([EOPL] §7.6)
    1. first-order predicate logic (Horn clauses, resolution, and unification; §7.6)
    2. logic programming in PROLOG (facts, rules, and goals)
    3. logic programming in PROLOG (control and cut)

  7. Object-oriented programming ([EOPL] pp. 169-171, [QTOL])
    1. message passing, dynamic binding, and reflection (pp. 169-171)
    2. Smalltalk and Squeak ([QTOL])
    3. course reflection


References


© S. Perugini, Winter 2007, University of Dayton. Permission to use ideas about the organization of topics and any notes or material is granted, provided suitable acknowledgments and citations are made.
Return Home