skip to main content
10.1145/1639950.1639963acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

A different kind of programming languages course

Published:25 October 2009Publication History

ABSTRACT

The complexity of the well-explored regions of the programming language design space has increased substantially in the last twenty-five years with the addition of a large number of object-oriented programming languages (OOPLs). This design domain was already known to be large and complex before OOPLs came on the scene, and many offerings of the standard programming languages course before that time did not even mention the object-oriented programming (OOP) paradigm. Now that OOP has become mainstream, undergraduate programs which include a course on programming language design and implementation have responded by expanding their existing course or by jettisoning some of the alternative ideas in favor of expanded coverage of OOPLs. There are two facts, however, which must be confronted as we consider what information we would like to pass on to our students in this fascinating area of our discipline. The first is that the design space represented by OOPLs is large enough to justify a separate course, and the second is that a large number of ideas from other language paradigms appear in subsets of well-known languages for OOP. This paper presents a course in the design and implementation of programming languages that (as OOP itself did in the late eighties) turns some accepted notions "inside out" by proposing that the entire course be presented from the OOP point of view. Such a course has been offered by Grove City College for a decade and has matured into a very effective means of communicating essential programming language design and implementation ideas to our students. The course could be offered as the only advanced course in the area, as one course in a two-semester sequence, or as an alternative to the traditional course.

References

  1. Backus, J. 1978. Can Programming be Liberated from the Von Newmann Style? Communications of the ACM 21, 8 (August 1978), 613--641. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Barnes, J. G. P. An overview of Ada. 1980. Software Practice and Experience 10, 11 (November 1980), 851--887.Google ScholarGoogle Scholar
  3. ECMA International. 2006. C# Language Specification. 4th Edition. DOI = http://www.ecma--international.org/publications/files/ECMA-ST/Ecma-334.pdfGoogle ScholarGoogle Scholar
  4. Goldberg, Adele and Robson, David. 1989. Smalltalk-80: The Language. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Gosling, J, Bill Joy, et al. 2000. The Java Language Specification. 2nd Edition. Sun Microsystems. DOI= http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Kowalski, Robert. 1979. Algorithm = Logic+Control. Communications of the ACM 22, 7 (July 1979), 424--436. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. McCarthy, J. 1960. Recursive Functions of Symbolic Expressions. Communications of the ACM 3, 4 (April 1960), 184--195. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Paul, Robert J. 1984. An introduction to Modula 2, BYTE Magazine 9, 8 (August 1984), 195--202.Google ScholarGoogle Scholar
  9. Pratt, Terrence. 1975. Programming Languages: Design and Implementation. 1st Edition. Prentice-Hall. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Stroustrup, B. 2000. The C++ Programming Language: Special Edition. Pearson. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A different kind of programming languages course

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader