CPS 343/543: Comparative Languages/Winter 2007
CPS 343/543 (3 sem hrs) is a course in programming language concepts. The
approach involves studying language concepts by implementing a series of
interpreters in Scheme, for purposes of its elegance and power, and assessing
the differences in the resulting languages. Students can also expect a
comparative survey of programming paradigms, including the use of
representative languages, such as ML, Haskell, PROLOG, and Smalltalk. Course
themes include the relationship between languages and the capacity to express
ideas about
computation, and the influence of language design and implementation options on
current trends in programming practice and vice versa. This course assumes no
prior experience with Scheme.
Syllabus
Pre-requisites: CPS 350 (Data Structures and Algorithms) (with
a minimum grade of C for students enrolled in CPS 543).
Meeting times: M W 4:30pm-5:45pm, MH 203
Instructor:
Dr. S. Perugini,
AN 145, 229-4079,
perugisa at udayton dot edu,
OH's: M W 3:30pm-4:30pm and by appointment.
Teaching assistant:
Vinay Thotakura, thotakvc at notes dot udayton dot edu
Required textbook:
| [EOPL] |
Essentials
of Programming Languages by D.P. Friedman,
M. Wand, and C.T. Haynes. MIT Press, Cambridge, MA, Second edition, 2001.
ISBN: 0-262-06217-8 (textbook
webpage
contains links to the source code
of all programs in the text). |
Recommended textbooks:
| [TLS] |
The
Little Schemer by
D.P. Friedman and M. Felleisen. MIT Press, Cambridge, MA, Fourth edition, 1996.
ISBN: 0-262-56099-2. |
| [TSS] |
The
Seasoned Schemer by
D.P. Friedman and M. Felleisen. MIT Press, Cambridge, MA,
1996. ISBN: 0-262-56100-X. |
| [TSPL] |
The Scheme Programming Language by
R.K. Dybvig. MIT Press, Cambridge, MA, Third edition, 2003. ISBN: 0-262-54148-3
(entire text of second and
third editions is available online)
|
| [TLM] |
The Little MLer
by M. Felleisen and D.P. Friedman. MIT Press,
Cambridge, MA, 1997. ISBN: 978-0262561143.
|
| [EMLP] |
Elements
of ML Programming by
J.D. Ullman. Prentice Hall, Upper Saddle River, NJ,
Second edition, 1997. ISBN: 0-137-90387-1.
|
| [CFPL] |
Haskell:
The Craft of Functional Programming by
S. Thompson. Addison-Wesley, Harlow, England,
Second edition, 1999. ISBN: 0-201-34275-8.
|
| [PPFC] |
Prolog
Programming A First Course by
P. Brna (entire text available online in various formats).
|
| [PIP] |
Programming in Prolog
by W.F. Clocksin and C.S. Mellish.
Springer-Verlag, Berlin, Fourth edition, 1997.
|
| [QTOL] |
Squeak: A Quick Trip to ObjectLand by
G. Korienek, T. Wrensch,
and D. Dechow. Addison-Wesley, Boston, MA, 2002. ISBN: 0-201-73114-2.
|
Course outline, lecture notes,
and reading assignments (to be completed prior to class):
- Fundamentals ([EOPL] Preface, Ch1)
- introduction,
course objectives and outline, and
programming language paradigms: Jan 3
- formal
languages and grammars (Backus-Naur form) (§1.1): Jan 8 10
- recursive programming in Scheme
(λ-calculus and S-expressions)
(§1.2): Jan 17 22 24
Exam 1: Jan 29 (closed book, closed notes)
- variable
binding and scope (§1.3): Feb 5
- Data abstraction ([EOPL] Ch2)
- inductive
data types and abstract syntax (§§2.1-2.2): Feb 7
- representation
strategies
(list, abstract syntax, and procedural) (§§2.3-2.4): Feb 12 19
Exam 2: Feb 21 (closed book, closed notes)
- Environment-passing interpreters ([EOPL] Ch3)
- front end,
conditional evaluation, and local binding (§§3.1-3.4)
[The Roots of LISP]:
Feb 26
- procedures
and closures (§3.5): Feb 28
- recursion (§3.6)
and variable assignment (§3.7): Mar 5
- parameter-passing mechanisms (§3.8): Mar 7
- lazy
evaluation and thunks
(call-by-name and call-by-need; §3.8): Mar 19
- lazy evaluation in Haskell [installing
& using HUGS98] ([CFPL]), and statements
and side effects (§3.9): Mar 21
Exam 3: Mar 26 (take home)
- Continuations ([EOPL] pp. 241-243, §8.1, [TSPL]
§§3.2-3.4, [TSS] Ch13, 19)
- continuations
and call/cc
[about
continuations]
([TSPL]
§3.3, [TSS] Ch13): Mar 26
- tail
calls (pp. 241-243,
[TSPL]
§3.2) and
continuation-passing
style (§8.1, [TSPL]
§3.4, [TSS] Ch19): Mar 28
- Types ([EOPL] Ch4, [EMLP] Ch3,5,6,8, [TLML])
- strong typing, type inference, and currying
([EMLP] Ch3,5) [installing
& using SML-NJ]: Apr 2
- type systems (in ML
[structures, signatures, and functors]; [EMLP] Ch6,8): Apr 4
- Logic programming ([EOPL] §7.6)
- first-order
predicate logic (Horn clauses, resolution, and unification; §7.6):
Apr 11
- logic
programming in PROLOG (facts, rules, and goals): Apr 11
- logic
programming in PROLOG (control and cut): Apr 16
- Object-oriented programming ([EOPL] pp. 169-171, [QTOL])
- message passing,
dynamic binding, and reflection (pp. 169-171): Apr 23
- Smalltalk
and Squeak ([QTOL]); and
course reflection: Apr 25
Final Exam:
M April 30, 4:30pm-6:20pm, MH 203
(comprehensive, closed book, closed notes)
Programming
languages resources
(programming style guide)
Homeworks:
1
2
3
4
5
6
7
8
9
10
CPS 543 project
Grades: WebCT
Accounts:
CPS account access @ home |
UNIX account access |
CPS labs hours |
Keeping your password safe |
A beginner's guide to effective e-mail
If you are unable to log into your CPS (Windows
or UNIX) account or if you forget your
CPS (Windows or UNIX) account password,
contact the CPS systems administrator, Mr. Tramontana, at
tramonjr at notes dot udayton dot edu
or 229-3835,
and be as specific as possible. Mr. Tramontana's
office is located in the back of
AN 131 and his office hours are M T W Th F 8:30am-4:30pm.
Helpful links:
UD academic calendar |
UD student handbook |
UDit policies
Feedback:
Dr. Perugini welcomes
any feedback you may have on the style of the lectures,
the concepts presented in class, the course webpage,
homeworks, deadlines, course and grading policies,
or your general
experience in the course.
|