skip to main content
10.1145/1734263.1734436acmconferencesArticle/Chapter ViewAbstractPublication PagessigcseConference Proceedingsconference-collections
research-article

Interfaces first (and foremost) with Java

Published:10 March 2010Publication History

ABSTRACT

Abstraction is a critical concept that underlies many topics in computing science. For example, in software engineering, the distinction between a component's behavior and its implementation is fundamental. Java provides two constructs that correspond to precisely this distinction: A Java interface is a client's abstract view of a component's behavior, while a class is a concrete implementation of that same component. We have developed a course that introduces Java while following a discipline of diligently decomposing every component into these two separate linguistic elements. In this course, interfaces are given the same prominence as classes since both are needed for a complete component. This approach is helpful to students by providing: (i) a clear manifestation of the role of abstraction in software systems, and (ii) a framework that naturally motivates many good coding practices adopted by professional programmers.

References

  1. D. J. Barnes and M. Kölling. Objects First with Java: A Practical Introduction Using BlueJ. Prentice Hall, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. J. Bloch. Effective Java. Prentice Hall, 2nd edition, 2008.Google ScholarGoogle Scholar
  3. T. Colburn and G. Shute. Abstraction in computer science. Minds Mach., 17(2):169--184, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. W. R. Cook, W. Hill, and P. S. Canning. Inheritance is not subtyping. In POPL '90: Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 125--135, New York, NY, USA, 1990. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Gries. A principled approach to teaching OO first. In SIGCSE '08: Proceedings of the 39th SIGCSE technical symposium on Computer science education, pages 31--35, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. O. Hazzan and J. Kramer. The role of abstraction in software engineering. In ICSE Companion '08: Companion of the 30th international conference on Software engineering, pages 1045--1046, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. P. B. Henderson, D. Baldwin, V. Dasigi, M. Dupras, J. Fritz, D. Ginat, D. Goelman, J. Hamer, L. Hitchner, W. Lloyd, J. Bill Marion, C. Riedesel, and H. Walker. Striving for mathematical thinking. SIGCSE Bull., 33(4):114--124, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. A. Holub. Why getter and setter methods are evil. http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html, September 2003.Google ScholarGoogle Scholar
  9. C. Horstmann. Big Java. John Wiley & Sons, 3rd edition, 2008.Google ScholarGoogle Scholar
  10. E. Howe, M. Thornton, and B. W. Weide. Components-first approaches to CS1/CS2: Principles and practice. In SIGCSE '04: Proceedings of the 35th SIGCSE technical symposium on Computer science education, pages 291--295, New York, NY, 2004. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. Koenig and B. E. Moo. Accelerated C++: Practical Programming by Example. C++ In-Depth Series. Addison-Wesley, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Kölling, B. Quig, A. Patterson, and J. Rosenberg. The BlueJ system and its pedagogy. Journal of Computer Science Education, 13(4):249--268, December 2003.Google ScholarGoogle ScholarCross RefCross Ref
  13. G. T. Leavens, K. R. M. Leino, E. Poll, C. Ruby, and B. Jacobs. JML: notations and tools supporting detailed design in Java. Technical Report TR #00-15, Iowa State University, August 2000.Google ScholarGoogle Scholar
  14. B. Liskov and J. Guttag. Program Development in Java: Abstraction, Specification, and Object-Oriented Design. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. B. H. Liskov and J. M. Wing. A behavioral notion of subtyping. ACM Trans. Program. Lang. Syst., 16(6):1811--1841, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. T. J. Long, B. W. Weide, P. Bucci, D. S. Gibson, J. Hollingsworth, M. Sitaraman, and S. Edwards. Providing intellectual focus to CS1/CS2. SIGCSE Bull., 30(1):252--256, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Massachusetts Institute of Technology. 6.170: Lab in software engineering. Course notes on web, Fall 2007. http://www.mit.edu/~6.170/.Google ScholarGoogle Scholar
  18. H. Roumani. Practice what you preach: Full separation of concerns in CS1/CS2. SIGCSE Bull., 38(1):491--494, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. W. Savitch. Absolute Java. Pearson Education, 3rd edition, 2008.Google ScholarGoogle Scholar
  20. A. Schmolitzky. "Objects first, interfaces next" before inheritance. In OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pages 64--67, New York, NY, USA, 2004. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. Sitaraman, B. W. Weide, and W. F. Ogden. On the practical need for abstraction relations to verify abstract data type representations. IEEE Trans. Softw. Eng., 23(3):157--170, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. The Joint Task Force on Computing Curricula. Computing curricula 2001. Journal on Educational Resources in Computing (JERIC), 1(3es):1--240, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Interfaces first (and foremost) with Java

    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
    • Published in

      cover image ACM Conferences
      SIGCSE '10: Proceedings of the 41st ACM technical symposium on Computer science education
      March 2010
      618 pages
      ISBN:9781450300063
      DOI:10.1145/1734263

      Copyright © 2010 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 10 March 2010

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate1,595of4,542submissions,35%

      Upcoming Conference

      SIGCSE Virtual 2024

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader