CPS 343/543 (3 sem hrs) is a course in programming
language concepts. The approach involves studying
language concepts, such as scope and parameter
passing, by implementing a series of interpreters in
Scheme, for purposes of its combined simplicity 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 Haskell, PROLOG,
and Smalltalk. The course emphasizes alternative
language features such as continuations, currying,
and lazy evaluation, and the use of these features in
novel application areas such as web interaction
management. 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, Haskell,
PROLOG, or Smalltalk.
Syllabus
Pre-requisites: CPS 350 (Data Structures and
Algorithms) (a minimum grade of C is required for
students enrolled in CPS 543)
Meeting times: M W 4:30pm-5:45pm, MH 203
Instructor: Dr. S.
Perugini, AN 145, 229-4079, instructor's last
name at udayton dot edu, OH's: M W 5:45pm-6:45pm and
by appointment.
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) |
|
[PIH] |
Programming
in Haskell by G. Hutton. Cambridge
University Press, Cambridge, 2007. ISBN:
0-521-69269-5. |
|
[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
[A
Brief Introduction to Lisp, about
closures]: Jan 7
-
formal languages and grammars (Backus-Naur
form) (§1.1): Jan 9 14
-
recursive programming in Scheme
(λ-calculus and S-expressions)
(§1.2) [installing
& using PLT Scheme,
functional programming resources, The Scheme
Programming Language]: Jan 16 23 28
30
- Exam I: Feb 4 (closed
book, closed notes)
-
variable binding and scope (§1.3): Feb
6
- Data abstraction ([EOPL] Ch2)
-
inductive data types and abstract syntax
(§§2.1-2.2): Feb 11
-
representation strategies (list, abstract
syntax, and procedural) (§§2.3-2.4): Feb
13
- Environment-passing interpreters ([EOPL] Ch3,
[PIH] Ch4,5,12)
-
front end, conditional evaluation, and local
binding (§§3.1-3.4) [The
Roots of LISP]: Feb 18
-
procedures and closures
(§3.5): Feb 20
- Exam II: Feb 25 (closed
book, closed notes)
-
recursion (§3.6) and
variable assignment (§3.7): Feb 27
-
parameter-passing mechanisms (§3.8): Mar
3
-
lazy evaluation and thunks (call-by-name
and call-by-need; §3.8): Mar 5
-
lazy evaluation in Haskell [installing
& using HUGS98] ([PIH] Ch4,5,12), and
statements and side effects (§3.9): Mar 10
12
- Types ([EOPL] Ch4, [PIH] Ch3,7,10, [EMLP]
Ch3,5,6,8)
-
strong typing, type inference, and currying
(in Haskell; [PIH] Ch3,7):
Mar 12
- type systems (in
Haskell; [PIH] Ch10):
Mar 26
- Exam III: Mar 31
(take home)
- Control ([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 31
-
tail calls (pp. 241-243,
[TSPL] §3.2) and
continuation-passing style (§8.1,
[TSPL] §3.4, [TSS] Ch19): Apr 2
- Logic programming ([EOPL] §7.6)
-
first-order predicate logic (Horn clauses,
resolution, and unification; §7.6): Apr 7
-
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]:
Apr 14
-
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 21
-
Smalltalk and
Squeak ([QTOL]) [A
Brief Introduction to Smalltalk,
installing & using Squeak,
object-oriented programming resources]; and
course reflection: Apr 23
- Final Exam: M April 28,
4:30pm-6:20pm, MH 203 (comprehensive, closed book,
closed notes)
Programming
languages resources
Collection
of Paul Graham's essays
Practice problems
(programming style
guide)
Homeworks: 1
2 3 4 5 6 7 8 9 10
Grades: available in WebCT
Computer 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:
academic calendar | 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.
|