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.
- Backus, J. 1978. Can Programming be Liberated from the Von Newmann Style? Communications of the ACM 21, 8 (August 1978), 613--641. Google ScholarDigital Library
- Barnes, J. G. P. An overview of Ada. 1980. Software Practice and Experience 10, 11 (November 1980), 851--887.Google Scholar
- ECMA International. 2006. C# Language Specification. 4th Edition. DOI = http://www.ecma--international.org/publications/files/ECMA-ST/Ecma-334.pdfGoogle Scholar
- Goldberg, Adele and Robson, David. 1989. Smalltalk-80: The Language. Addison-Wesley. Google ScholarDigital Library
- 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 ScholarDigital Library
- Kowalski, Robert. 1979. Algorithm = Logic+Control. Communications of the ACM 22, 7 (July 1979), 424--436. Google ScholarDigital Library
- McCarthy, J. 1960. Recursive Functions of Symbolic Expressions. Communications of the ACM 3, 4 (April 1960), 184--195. Google ScholarDigital Library
- Paul, Robert J. 1984. An introduction to Modula 2, BYTE Magazine 9, 8 (August 1984), 195--202.Google Scholar
- Pratt, Terrence. 1975. Programming Languages: Design and Implementation. 1st Edition. Prentice-Hall. Google ScholarDigital Library
- Stroustrup, B. 2000. The C++ Programming Language: Special Edition. Pearson. Google ScholarDigital Library
Index Terms
- A different kind of programming languages course
Recommendations
Some remarks on teaching of programming
CompSysTech '04: Proceedings of the 5th international conference on Computer systems and technologiesIn this paper we give some remarks on the problem of teaching programming for the first year students at the undergraduate level. The remarks are based on the experience gained by the author through several years of teaching programming at the Warsaw ...
A comparison of object-oriented languages in software engineering
Object-oriented programming is still a relatively new technology in the world of web development. Object-oriented programming languages directly support the object notions of classes, inheritance, information hiding, and dynamic binding. In Object-...
A Domain-Theoretic Model Of Nominally-Typed Object-Oriented Programming
The majority of contemporary mainstream object-oriented (OO) software is written using nominally-typed OO programming languages. Extant domain-theoretic models of OOP developed to analyze OO type systems miss crucial features of these mainstream OO ...
Comments