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

  1. E.W. Dijkstra Go To Statement Considered Harmful , Communications of the ACM, 11, 3 (1968) 147-148.
  2. A brief and clear description of the hazards of goto statements.

  3. E.W. Dijkstra Structured programming , EWD-268, Technical report, Eindhoven University (1968).
  4. What techniques should be applied in the process of program composition?

  5. D. Parnas, On the criteria to be used in decomposing systems into modules, Communications of the ACM, 15, 12 (1972) 1053-1058.
  6. 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

  7. N. Wirth, Program development by stepwise refinement, Communications of the ACM, 14, 4 (1971) 221--227.
  8. The creator of Pascal provides insight into the creative activity of programming, viewed as a sequence of design decisions. 1 hour.

  9. H. D. Mills, How to write correct programs and know it, Proceedings of the international conference on Reliable software (1975) 363-370.
  10. "You can learn to consistently write programs which are error free", claims the author! 1 hour.
    Shiri+Shai, 9.3.05. presentation

  11. D. Knuth, Literate Programming, Computer Journal 27, 2 (1984) 97-111.
  12. J. Bentley and D. Knuth, Programming pearls: literate programming, Comm. ACM 29, 5 (1986) 369-384.
  13. 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

  1. B. Kernighan, Why Pascal is Not My Favorite Programming Language, Bell Labs CSTR 100, July 1981.
  2. 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.

  3. Aleph One, Smashing the stack for fun and profit , Phrack 7, 49 (1996)
  4. 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

  5. J. McCarthy, Recursive functions of symbolic expressions and their computation by machine, Comm. ACM 3, 4 (1960) 184-195.
  6. The original paper which defines the programming language LISP, and with it the paradigm of functional languages. 2 hours.
    Amit, 30.3.05. presentation

  7. D. Ingalls, Design principles behind Smalltalk, BYTE Special Issue on Smalltalk, August 1981.
  8. The motivation behind Smalltalk, one of the first object-oriented languages. 1 hour.

  9. 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.
  10. A detailed description of a well-written large-scale object oriented system. 2 hours.
    Yair, 6.4.05 presentation

  11. L. Cardelli and P. Wagner, On Understanding Types, Data Abstraction, and Polymorphism. ACM Computing Surveys 17, 4 (1985) 471-522.
  12. 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

  1. 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.
  2. The seminal paper on programming language semantics. 2 hours.
    Sagi+Dan, 4.5.05

  3. C. A. R. Hoare, An axiomatic basis for computer programming Comm. ACM 12, 10 (1969) 576-580.
  4. Axiomatic semantics for programming languages. 2 hours.
    Yariv, 18.5.05

  5. Z. Manna and J, Vuillemin, Fixpoint approach to the theory of computation, Comm. ACM 15, 17 (1972), 528-536.
  6. Fixpoint semantics. 2 hours.
    Sagi+Dan, 25.5.05

  7. B. C. Pierce, Foundational calculi for programming languages, The CRC Handbook of Computer Science and Engineering, 1995.
  8. Lambda-calculus and its application to the semantics of programming languages. 2 hours.
    Iliya, 1.6.05

Miscellaneous

  1. Paul R. Wilson, Uniprocessor Garbage Collection Techniques, ACM Computing Surveys, 1992.
  2. 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