CS242: Course Readings

Home Announce Handouts Slides Reading People Office Hours

Some of these articles may be assigned as part of homework. They may also be useful to you as a supplement to lectures and other reading. None of the readings listed on this page are required unless they are explicitly assigned in homework or in lecture.

Articles and Reports

  1. J. McCarthy, Recursive functions of symbolic expressions and their computation by machine, Comm. ACM 3, 4 (1960) 184-195.
  2. J. Backus, Can programming be liberated from the von Neuman style?, Comm. ACM 21, 8 (1978) 613-641. (large file)
  3. R. Harper, Introduction to Standard ML, Report ECS-LFCS-86-14, Dept. Computer Science, Univ. Edinburgh, 1989. (Link is to updated web version.)
  4. B. Kernighan, Why Pascal is Not My Favorite Programming Language, Bell Labs CSTR 100, July 1981.
  5. A. Koenig, An anecdote about ML type inference, USENIX Symposium on Very High Level Languages,1994.
  6. Aleph One, Smashing the stack for fun and profit , Phrack 7, 49 (1996)
  7. E.W. Dijkstra Go To Statement Considered Harmful , Communications of the ACM, 11, 3 (1968) 147-148.
  8. N. Wirth, Program development by stepwise refinement, Communications of the ACM, 14, 4 (1971) 221--227.
  9. D. Parnas, On the criteria to be used in decomposing systems into modules, Communications of the ACM, 15, 12 (1972) 1053-1058.
  10. D. Ingalls, Design principles behind Smalltalk, BYTE Special Issue on Smalltalk, August 1981. (Scanned by Dwight Hughes.)
  11. 15 Years Ago in BYTE: The Smalltalk Environment by Larry Tessler, BYTE, August 1996.
  12. 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.


  1. E. Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.
  2. B. Stroustrup, The Design and Evolution of C++, Addison-Wesley, 1994, 461 pages.
  3. K. Arnold and J. Gosling, The Java Programming Language, Addison-Wesley, 1996.

A dictionary of common programming language terms is available.
Suggestions for additional terms may be sent to cs242@cs.stanford.edu