CPS 343/543: Comparative Languages Lecture Notes
- Fundamentals ([EOPL] Preface, Ch 1)
- introduction, course objectives and outline, and
programming language paradigms
[A
Brief Introduction to Lisp,
about closures]
- formal languages and grammars (Backus-Naur
form) (§1.1)
- functional programming in Scheme
(λ-calculus and S-expressions) (§1.2)
[installing
& using PLT Scheme,
functional programming resources,
The Scheme Programming Language]
- functional programming in Scheme
(building data structures, such as binary trees, with lists)
- functional programming in Scheme
(let, let*, letrec)
- variable binding and scope (§1.3)
- Data abstraction ([EOPL] Ch 2)
- inductive data types and abstract syntax
(§§2.1-2.2)
- representation strategies
(list, abstract syntax, and procedural) (§§2.3-2.4)
- Environment-passing interpreters ([EOPL] Ch 3, [PIH] Ch 4, 5, 12)
- front end,
conditional evaluation, and local binding (§§3.1-3.4)
[The Roots of LISP]
- (non-recursive) procedures and
closures
(§3.5)
- recursion (§3.6)
- variable assignment (§3.7)
- parameter-passing mechanisms (§3.8)
- lazy
evaluation and thunks
(call-by-name and call-by-need; [EOPL] §3.8)
- lazy evaluation in Haskell [installing
& using HUGS98] ([PIH] Ch 4, 5, 12)
- statements and side effects (§3.9)
- Types ([EOPL] Ch 4, [PIH] Ch 3, 7, 10, [EMLP] Ch 3, 5, 6, 8, [TLML])
- strong typing, type inference, and currying
([PIH] Ch 3, 7, [EMLP] Ch 3, 5) [installing
& using SML-NJ]
- type systems (in Haskell; [PIH] Ch 10
and ML
[structures, signatures, and functors]; [EMLP] Ch 6, 8)
- Control ([EOPL] pp. 241-243, §8.1, [TSPL]
§§3.2-3.4, [TSS] Ch 13, 19)
- continuations
and call/cc
[about continuations]
([TSPL]
§3.3, [TSS] Ch 13)
- tail
calls ([EOPL] pp. 241-243, [TSPL]
§3.2) and continuation-passing
style ([EOPL] §8.1, [TSPL]
§3.4, [TSS] Ch 19)
- Logic programming ([EOPL] §7.6)
- first-order
predicate logic (Horn clauses, resolution, and unification; §7.6)
- logic
programming in PROLOG (facts, rules, and goals)
[A
Brief Introduction to PROLOG,
installing
& using SWI-PROLOG,
logic
programming resources,
Prolog
Programming A First Course]
- logic
programming in PROLOG (control and cut)
- Object-oriented programming ([EOPL] pp. 169-171, [QTOL])
- message passing,
dynamic binding, and reflection (pp. 169-171)
- Smalltalk
and Squeak ([QTOL])
[A
Brief Introduction to Smalltalk,
installing
& using Squeak, object-oriented
programming resources]
- course reflection (terms and themes;
ACM A.M. Turing award winners with contributions related to languages)
Appendix:
References
[BITL] |
G. J. Sussman, G.L. Steele, and R.P. Gabriel.
A Brief Introduction to Lisp. ACM SIGPLAN Notices,
28(3), 361-362, 1993. |
[COFP] |
S. Thompson. Haskell:
The Craft of Functional Programming.
Addison-Wesley, Harlow, England, Second edition, 1999.
|
[COPL6] |
R.W. Sebesta.
Concepts of Programming Languages.
Addison-Wesley, Boston, MA, Sixth edition, 2003. |
[EMLP] |
J.D. Ullman. Elements
of ML Programming.
Prentice Hall, Upper Saddle River, NJ, Second edition, 1997. |
[EOPL2] |
D.P. Friedman, M. Wand, and C.T. Haynes. Essentials
of Programming Languages.
MIT Press, Cambridge, MA, Second edition, 2001. |
[IALC] |
J.E. Hopcroft, R. Motwani, and J.D. Ullman.
Introduction to Automata Theory, Languages, and Computation.
Addison-Wesley, Boston, MA, Third edition, MA, 2001. |
[PIH] |
G. Hutton.
Programming
in Haskell.
Cambridge University Press, Cambridge, 2007. ISBN: 0-521-69269-5.
|
[PLP] |
M.L. Scott. Programming
Language Pragmatics.
Morgan Kaufmann, Amsterdam, Second edition, 2006.
|
[PLPP] |
K.C. Louden.
Programming Languages: Principles and Practice.
Brooks/Cole, Pacific Grove, CA, Second edition, 2002.
|
[PPFC] |
P. Burna.
Prolog Programming A First Course.
|
[QTOL] |
G. Korienek, T. Wrensch, D. Dechow.
Squeak: A Quick Trip To ObjectLand. Addison-Wesley, Boston, MA, 2002.
|
[SICP] |
H. Abelson and G.J. Sussman. Structure
and Interpretation of Computer Programs. MIT Press, Cambridge, MA,
Second edition, 1996.
|
[TLML] |
M. Felleisen and D.P. Friedman. The Little MLer.
MIT Press, Cambridge, MA, 1997.
|
[TLS] |
D.P. Friedman and M. Felleisen. The Little Schemer.
MIT Press, Cambridge, MA, Fourth edition, 1996.
|
[TSPL] |
R.K. Dybvig. The Scheme Programming Language.
MIT Press, Cambridge, MA, Third edition, 2003.
|
[TSS] |
D.P. Friedman and M. Felleisen. The Seasoned
Schemer.
MIT Press, Cambridge, MA, 1996.
|
[UPE] |
B.W. Kernighan and B. Pike.
The UNIX Programming Environment
Prentice Hall, Upper Saddle River, NJ, 1984. |
© 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.
|