Seminar in Programming Languages (203.4125)
Administration
- Instructor:
- Shuly Wintner. Office
hours: Wednesday 10:00-11:00, Jacobs Building 403. Phone:
(828)8180.
- Times:
- Spring 2005, Wednesday, 8:00-10:00.
- Place:
- Jacobs 201
- Prerequisites:
- Programming experience and
mathematical maturity. The ideal programming experience is practical
exposure to several different programming languages. The ideal
mathematical background is knowledge of mathematical logic,
induction and algebra. None of these prerequisites are strict. However, your
desire to be exposed to this material is very important.
- Credit:
- 2 credits.
- Method:
- Each student (or a team of two) will
pick an article (or two) and present it (or them) in class. See the list
below for the articles, their order of presentation and how much
time we will spend on them. I expect each student to be
responsible for the equivalent of two hours. Grade will be
based on the level of comprehension of the assigned article,
quality of the presentation and class participation.
- Copyright:
- I have made most of the articles available locally. However, since
most are protected by copyright, I protect the local copies
with a password. Students enrolled in the course can contact
me to obtain a username and a password.
Content
We will read some of the classic (and should-be classic) works in
Programming Languages, both theory and practice. Many of them are
either among the most cited works in this area or jewels of
scientific writing or both.
Program structure and software engineering
- E.W. Dijkstra
Go To Statement Considered Harmful
, Communications of the ACM, 11, 3 (1968)
147-148.
A brief and clear description of the hazards of goto statements.
- E.W. Dijkstra
Structured programming
, EWD-268, Technical report, Eindhoven University (1968).
What techniques should be applied in the process of
program composition?
- D. Parnas, On the criteria to be used in
decomposing systems into modules, Communications of the ACM, 15,
12 (1972) 1053-1058.
A definition of modularization, along with criteria for
evaluating two possible ways for dividing a program into
modules. The Object Oriented idea introduced. 2 hours (for the three papers).
Yaniv+Hagai, 2.3.05. presentation
- N. Wirth, Program development by stepwise
refinement, Communications of the ACM, 14, 4 (1971)
221--227.
The creator of Pascal provides insight into the creative
activity of programming, viewed as a sequence of design
decisions. 1 hour.
- H. D. Mills, How to write correct programs
and know it, Proceedings of the international
conference on Reliable software (1975) 363-370.
"You can learn to consistently write programs which are error
free", claims the author! 1 hour.
Shiri+Shai, 9.3.05. presentation
- D. Knuth, Literate Programming,
Computer Journal 27, 2 (1984) 97-111.
- J. Bentley and D. Knuth,
Programming pearls: literate programming,
Comm. ACM 29, 5 (1986) 369-384.
A framework which combines a programming language with its
documentation. Knowledge of Pascal and TeX
is recommended. 2 hours (for both papers).
Yaniv+Hagai, 16.3.05. presentation
Specific languages and programming language paradigms
- B. Kernighan, Why Pascal is Not My
Favorite Programming Language, Bell Labs CSTR 100, July 1981.
One of the creators of the C programming language explains many of the
shortcomings of Pascal. A beautiful comparison of two (seemingly
similar, imperative) programming languages. Knowledge of Pascal
is needed. 1 hour.
- Aleph One,
Smashing the stack for fun and profit
, Phrack 7, 49 (1996)
A lucid insight into the world of hacking and the
shortcomings of C. Very technical, requires knowledge of C and some assembler. 1 hour.
Ran, 23.3.05
- J. McCarthy, Recursive
functions of symbolic expressions and their computation by
machine, Comm. ACM 3, 4 (1960) 184-195.
The original paper which defines the programming language LISP,
and with it the paradigm of functional languages. 2 hours.
Amit, 30.3.05. presentation
- D. Ingalls, Design principles behind Smalltalk,
BYTE Special Issue on Smalltalk, August 1981.
The motivation behind Smalltalk, one of the first
object-oriented languages. 1 hour.
- W.R. Cook, Interfaces and specifications for the Smalltalk-80 collection classes,.Proc ACM
Conf. Object-Oriented Programming Systems, Languages, and Applications (OOPSLA
'92). ACM SIGPLAN Notices ,Vol. 27, No. 10 (Oct. 1992),
Pages 1-15.
A detailed description of a well-written large-scale object
oriented system. 2 hours.
Yair, 6.4.05 presentation
- L. Cardelli and P. Wagner, On Understanding Types, Data Abstraction, and Polymorphism.
ACM Computing Surveys 17, 4 (1985) 471-522.
A survey paper which studies the notion of types in programming
languages, presents a model of typed, polymorphic languages
and applies it to the design of practical languages. 4 hours.
Evgeniy, 13.4.05
Semantics of programming languages
- R. W. Floyd,
Assigning Meanings to Programs, Proceedings
of the Symposium in Applied Mathematics, Vol. 19,
(Ed. J. T. Schwartz), American Mathematical Society,
Providence, R. I., (1967) pp. 19-32.
The seminal paper on programming language semantics. 2 hours.
Sagi+Dan, 4.5.05
- C. A. R. Hoare,
An axiomatic basis for computer programming
Comm. ACM 12, 10 (1969) 576-580.
Axiomatic semantics for programming languages. 2 hours.
Yariv, 18.5.05
- Z. Manna and J, Vuillemin, Fixpoint approach
to the theory of computation, Comm. ACM 15, 17
(1972), 528-536.
Fixpoint semantics. 2 hours.
Sagi+Dan, 25.5.05
- B. C. Pierce, Foundational calculi for
programming languages, The CRC Handbook of Computer
Science and Engineering, 1995.
Lambda-calculus and its application to the semantics of
programming languages. 2 hours.
Iliya, 1.6.05
Miscellaneous
- Paul R. Wilson, Uniprocessor Garbage Collection Techniques, ACM
Computing Surveys, 1992.
Shiri+Shai, 8.6.05. presentation
Seminar in Programming Languages,
http://cs.haifa.ac.il/~shuly/teaching/05/programming-languages/
Maintained by
shuly@cs.haifa.ac.il
.
Last modified: Thu Jun 16 08:40:04 IDT 2005