Teaching software design in the freshman year

  • Keith Pierce
  • Linda Deneen
  • Gary Shute
Session 5 “Teaching Design”
Part of the Lecture Notes in Computer Science book series (LNCS, volume 536)


Designing high-quality software is difficult, and therefore instruction in design should hold prominence in educating future software engineers, just as in other engineering disciplines. Nearly all software engineers receive their education within programs in computer science, but these programs typically provide inadequate instruction in design. The missing ingredient is instruction in the making of intelligent choices among design alternatives. We must increase the emphasis on the teaching of design principles for guiding the choice-making, not just in senior or graduate courses in software engineering, but throughout the undergraduate curriculum. In particular, the teaching of design in the introductory programming sequence can be improved. We present some examples of how instruction in design can be incorporated into the first courses in programming.


Software Engineering Undergraduate Curriculum Software Engineer Institute Recursive Solution Software Engineer Institute 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Budgen 89]
    David Budgen, Introduction to Software Design, SEI Curriculum Module SEI-CM-2-2.1, Software Engineering Institute, Pittsburgh, 1989.Google Scholar
  2. [Burns et al. 87]
    Alan Burns, Andrew M. Lister, Andrew J. Wellings, A Review of Ada Tasking, Lecture Notes in Computer Science, volume 262, Springer Verlag, 1987.Google Scholar
  3. [Ford 90]
    Gary Ford, 1990 SEI Report on Undergraduate Software Engineering Education, Tech. Report CMU/SEI-90-TR-3, Software Engineering Institute, Pittsburgh, 1990.Google Scholar
  4. [Gilbert 83]
    John G. Gilbert, unpublished programming assignment from the Institute for Retraining in Computer Science, Clarkson University, 1983.Google Scholar
  5. [Guttag, Liskov 86]
    Barbara Liskov, John Guttag, Abstraction and Specification in Program Development, MIT Press, 1986.Google Scholar
  6. [Helman et al. 90]
    Paul Helman, Robert Veroff, Frank R. Carrano, Intermediate Problem Solving and Data Structures: Walls and Mirrors, Benjamin/Cummings, 1991.Google Scholar
  7. [Kay 85]
    David G. Kay, Programming for People/Pascal, Mayfield, 1985.Google Scholar
  8. [Koffman 89]
    Elliot B. Koffman, Pascal: Problem Solving and Program Design, Third Edition, Addison-Wesley, 1989.Google Scholar
  9. [Naps et al. 89]
    Thomas L. Naps, Douglas W. Nance, Bhagat Singh, Introduction to Computer Science: Programming, Problem Solving, and Data Structures, Alternate Edition, West, 1989.Google Scholar
  10. [Plauger 87]
    P. L. Plauger, “Who's the Boss?”, Computer Language, July, 1987, pp 17–22.Google Scholar
  11. [Pressman 88]
    Roger S. Pressman, Software Engineering, A Practitioner's Approach, Second Edition, McGraw-Hill, 1982.Google Scholar
  12. [Shaw 89]
    Mary Shaw, “Larger Scale Systems Require Higher-Level Abstractions”, Proceedings of the Fifth International Workshop on Software Specification and Design, 1989, pp 143–146, IEEE Computer Society.Google Scholar
  13. [Sommerville 89]
    Ian Sommerville, Software Engineering, Addison-Wesley, 1989.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Keith Pierce
    • 1
  • Linda Deneen
    • 1
  • Gary Shute
    • 1
  1. 1.Department of Computer ScienceUniversity of Minnesota, DuluthDuluth

Personalised recommendations