Remember that you can use Ariadne and other library resources through the world wide web. If you are looking for an article that isn't available through our library or WMU's, check to see if I have a copy before requesting it through inter-library loan.
Click here for some references for various languages - if you find or know of others, feel free to e-mail me and I'll add them to our list.
Haskell
- Bird, R. Introduction to Functional Programming Using Haskell, 2nd Edition. Pearson Prentice Hall, Harlow, England, 1998.
- Davie, A.J.T. An Introduction to Functional Programming Systems Using Haskell. Cambridge University Press, Cambridge, UK, 1992.
- Hudak, P., Peterson, J., Fasel, J. (1999) A Gentle Introduction to Haskell 98, CiteSeer Scientific Leterature Digital Library, URL: http://citeseer.ist.psu.edu/hudak99gentle.html
- Hudak, P. The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, Cambridge, UK, 2000.
- Lipovaca, M. Learn You a Haskell for Great Good! http://learnyouahaskell.com
- O'Sullivan, B., Stewart, D., Goerzen, J. Real World Haskell, http://book.realworldhaskell.org
- Thompson, S. Haskell: The Craft of Functional Programming, 2nd Edition. Pearson Addison Wesley, Harlow, England, 1999.
- Hugs Manual (or pdf version)
- Haskell Tutorial at www.haskell.org
- The Wikipedia entry on Haskell Curry and on the language Haskell
See below for references about other programming languages and about some of the topics that will come up in this course.
General Programming Languages References
- Appleby, D. and VandeKopple, J. (1997) Programming Languages: Paradigm and Practice, 2nd Edition. McGraw-Hill, Boston, MA.
- Bergin, T.J. and Gibson, R.G., editors (1996) History of Programming Languages II. Addison-Wesley, Reading, MA.
- Ghezzi, C. and Jazayeri, M. (1998) Programming Language Concepts, 3rd Edition, John Wiley & Sons, New York, NY.
- Horowitz, E., editor (1987) Programming Languages: A Grand Tour, third edition. Computer Science Press, Rockville, MD.
- Louden, K. (2003) Programming Languages: Principles and Practice, second edition. Thompson Brooks/Cole, Pacific Grove, CA.
- Pratt, T.W. and Zelkowitz, M.V. (1999) Programming Languages: Design and Implementation, third edition. Prentice Hall, Upper Saddle River, NJ.
- Roosta, S. (2003) Foundations of Programming Languages: Design and Implementation. Thompson Brooks/Cole, Pacific Grove, CA.
- Sebesta, R.W. (2004) Concepts of Programming Languages, sixth edition. Pearson Education (Addison-Wesley), Boston, MA.
- Sethi, R. (1996) Programming Languages: Concepts and Constructs, second edition. Addison-Wesley, Reading, MA.
- Tucker, A. and Noonan, R. (2002) Programming Languages: Principles and Paradigms
- Webber, A.B.. (2003) Modern Programming Languages: A Practical Introduction. Franklin, Beedle & Associates, Wilsonville. OR.
- Wegner, P. (1976) "Programming languages -- the first 25 years." IEEE Transactions on Computers, Vol. C-25, No. 12, pp. 1207-1225.
- Wexelblat, R.L. editor (1981) History of Programming Languages. Academic Press (ACM Monograph Series), New York.
Journal Articles about Programming Languages Concepts and Paradigms
- Gannon, J.D. and J.J. Horning (1975), "Language design for programming reliability." IEEE Transactions on Software Engineering, Vol. SE-1, No. 2, pp. 179-191.
- Hoare, C.A.R. (1973) "Hints on programming language design." In [Horowitz 1987], pp. 31-40.
- Hoare, C.A.R. (1981) "The emperor's old clothes." Communications of the ACM, Vol. 24, No. 2, pp. 75-83.
- Shaw, M. et al. (1981) "A comparison of programming languages for software engineering." Software -- Practice and Experience, Vol. 11, pp. 1-52.
- Ashcraft, E.A. and W.W. Wadge (1982) "Rx for semantics." ACM Transactions on Programming Languages and Systems, Vol. 4, No. 2, pp. 283-294.
- Hoare, C.A.R. and P.E. Lauer (1974) "Consistent and complementary formal theories of the semantics of programming languages." Acta Informatica, Vol. 3, pp. 135-153.
- Marcotty, M. et al. (1976) "A sampler of formal definitions." ACM Computing Surveys, Vol. 8, No. 2, pp. 191-276.
- Dijkstra, E.W. (1968) "Go to statement considered harmful." Communications of the ACM, Vol. 11, No. 3, pp. 147-148.
- Dahl, O. et al. (1972) Structured Programming. Academic Press, New York.
- Knuth, D.E. (1974) "Structured programming with go to statements." ACM Computing Surveys, Vol. 6, No. 4, pp. 261-301.
- Cleaveland, J.C. (1986) An Introduction to Data Types. Addison-Wesley, Reading, MA.
- Feuer, A. and N. Gehani (1982) "A comparison of the programming languages C and Pascal." ACM Computing Surveys, Vol. 14, No. 1, pp. 73-92.
- Gries, D. and N. Gehani (1977) "Some ideas on data types in high-level languages." Communications of the ACM, Vol. 20, No. 6, pp. 414-420.
- Tanenbaum, A.S. (1978) "A comparison of Pascal and ALGOL 68." Computer Journal, Vol. 21, pp. 316-323.
- Guttag, J.V. (1977) "Abstract data types and the development of data structures." Communications of the ACM, Vol. 20, No. 6, pp. 396-404.
- Hanson, D.R. (1981) "Is block structure necessary?" Software -- Practice and Experience, Vol. 11, pp. 853-866.
- Liskov, B.H. and S.N. Zilles (1974) "Programming with abstract data types." ACM SIGPLAN Notices, Vol. 9, No. 4, pp. 50-59.
- Parnas, D.L. (1972) "On the criteria to be used in decomposing systems into modules." Communications of the ACM, Vol. 15, No. 12, pp. 1053-1058.
- Snyder, A. (1986) "Encapsulation and inheritance in object-oriented programming." ACM SIGPLAN Notices, Vol. 21, No. 11, pp 38-45.
- Taivalsaar, A. (1993) "On the notion of object." Journal of Systems and Software, Vol. 21., No. 1, pp. 3-16.
- Wegner, P. (1987) "The Object-Oriented Classification Paradigm." In: Bruce Shiver, Peter Wegner (eds.), Research Directions in Object-Oriented Programming, MIT Press, pp. 479-560.
- Backus, J. (1978) "Can programming be liberated from the von Neumann style? A functional style and its algebra of programs." Communications of the ACM, Vol. 21, No. 8, pp. 613-641.
- Hudak, P. (1989) "Conception, evolution, and application of functional programming languages." ACM Computing Surveys, Vol. 21, No. 3, pp. 359-411.
- McCarthy, J. (1960) "Recursive functions of symbolic expressions and their computation by machine, Part I." Communications of the ACM, Vol. 3, No. 4, pp. 184-195.
- Warren, D.H.D. et al. (1977) "Prolog: the language and its implementation compared to LISP." ACM SIGPLAN Notices, Vol. 12, No. 8.
- Ousterhout, J.K. (1998) "Scripting: higher-level programming for the 21st century." IEEE Computer, Vol. 31, No. 3, pp. 23-30.
Language Design Issues
Formal Semantics
Control Structures
Data Types
Encapsulation
Inheritance
Object-Oriented Languages
Functional Languages
Declarative Languages
Scripting Languages
Books and Articles about a Variety of Programming Languages
- Dijkstra, E.W. (1960) A primer of Algol 60 programming. Academic Press, New York.
- Naur, P. (1963) "Revised report on the algorithmic language Algol 60." Communications of the ACM, Vol. 6, No. 1, pp. 1-17.
- Naur, P. (1981) "The European side of the last phase of the development of ALGOL." In [Wexelblat 1981], pp. 92-139.
- Perlis, A.J. (1981) "The American side of the development of ALGOL." In [Wexelblat 1981], pp. 75-91.
- Barnes, J.G.P. (1984) Programming in Ada. Addison-Wesley, Reading, MA.
- Ichbiah, J.D. et al. (1979) "Rationale for the design of the Ada programming language." ACM SIGPLAN Notices, Vol. 14, No. 6B.
- Whitaker, W.A. (1993) "Ada - The Project, the DoD higher order language working group." ACM SIGPLAN Notices, Vol. 28, No. 3, pp. 299-331.
- Apt, K.R. et al. (1998) "Alma-0: An imperative language that supports declarative programming." ACM Transactions on Programming Languages and Systems, Vol. 20, No. 5, pp. 1014-1066.
- Apt, K.R. and A. Schaerf (1999) "Programming in Alma-0, or Imperative and Declarative Programming Reconciled." In D.M. Gabbay and M. de Rijke, editors, Frontiers of Combining Systems 2, Research Studies Press Ltd, pp. 1-16.
- Kernighan, B.W., and D.M. Ritchie (1988) The C Programming Language, second edition. Prentice-Hall, Englewood Cliffs, NJ.
- Ritchie, D.M. (1993) "The development of the C language." In [Bergin and Gibson 1996], pp. 671-687.
- Stroustrup, B. (1991) The C++ Programming Language. Addison-Wesley, Reading, MA.
- Stroustrup, B. (1994) The Design and Evolution of C++. Addison-Wesley, Reading, MA.
- Stroustrup, B. (1993) "A history of C++: 1979-1991." In [Bergin and Gibson 1996], pp. 699-755.
- Sammet, J. (1981) "The early history of COBOL." In [Wexelblat 1981], pp.199-243.
- Brinch Hansen, P. (1975) "The programming language Concurrent Pascal." IEEE Transactions on Software Engineering, Vol. SE-1, No. 2, pp. 199-207.
- Brinch Hansen, P. (1993) "Monitors and Concurrent Pascal: A personal history." In [Bergin and Gibson 1996].
- Brinch Hansen, P. (1978) "Distributed processes: A concurrent programming concept" Communications of the ACM, Vol. 21, No. 11, pp. 934-941.
- Backus, J. (1981) "The history of FORTRAN I, II, and III." In [Wexelblat 1981], pp. 25-45.
- McCarthy, J. (1981) "History of Lisp." In [Wexelblat 1981], pp. 173-185.
- Steele, G.L. Jr. (1984) Common Lisp. Digital Press, Burlington, MA.
- Winston, P.H. and B.K.P. Horn (1989) Lisp. Addison-Wesley, Reading, MA.
- Milner, R., M. Tofte, and R. Harper (1990) The Definition of Standard ML. MIT Press, Cambridge, MA.
- Ullman, J.D. (1994) Elements of ML Programming. Prentice Hall, Englewood Cliffs, NJ.
- Haberman, A.N. (1973) "Critical comments on the programming language Pascal." Acta Informatica, Vol. 3, pp. 47-58.
- Jensen, K. and N. Wirth (1985) Pascal User Manual and Report, third edition. Springer-Verlag, Berlin.
- Tennent (1978) "Another look at type compatibility in Pascal." Software -- Practice and Experience, Vol. 8, pp. 429-437.
- Welsh, J. et al. (1977) "Ambiguities and insecurities in Pascal." Software -- Practice and Experience, Vol. 7, pp. 685-696.
- Wirth, N. (1993) "Recollections on the development of Pascal." In [Bergin and Gibson 1996], pp. 97-111.
- Wall, L. et al. (1996) Programming perl, second edition. O'Reilly & Associates, Sebastopol, CA.
- Radin, G. (1981) "The early history and characteristics of PL/I." In [Wexelblat 1981], pp. 551-575.
- Clocksin, W.F. and C.S. Mellish (1987) Programming in Prolog. Springer-Verlag, Berlin.
- Colmerauer, A. and P. Roussel (1993) "The birth of Prolog." ACM SIGPLAN Notices, Vol. 28, No. 3, pp. 37-52.
- Kowalski, R.A. (1988) "The early years of logic programming." Communications of the ACM, Vol. 31, No. 1, pp. 38-43.
- Sterling, L. and E. Shapiro (1986) The Art of Prolog. MIT Press, Cambridge, MA.
- van Rossum, Guido, Python Tuturial, Python Software Foundation, http://www.python.org/doc/tut/. (At the time this entry was created, this link pointed to Release 2.4.2, 28 September 2005.)
- Hetland, Magnus Lie, Instant Python, http://www.hetland.org/python/instant-python.php.
- Birtwistle, M.G. et al. (1973) Simula Begin. Petrocelli/Charter, New York.
- Nygaard, K. and O.J. Dahl (1981) "The development of the Simula languages." In [Wexelblat 1981], pp. 439-480.
- Goldberg, A., and D. Robson (1983) Smalltalk-80: The Language and its Implementation. Addison-Wesley, Reading, MA.
- Kay, A.C. (1993) "The early history of Smalltalk." In [Bergin and Gibson 1996], pp. 511-579.
- Krasner (1983) Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley, Reading, MA.