Draft of an article to appear in ACM Computing Surveys 28(4), December 1996. Copyright © 1996 by the Association for Computing Machinery, Inc. See the permissions statement below.

Strategic Directions in Computer Science Education

Edited by

Allen B. Tucker

Computer Science Department, Bowdoin College, Brunswick, ME 04011 USA
allen@polar.bowdoin.edu, http://www.bowdoin.edu/~allen

Abstract: This report identifies major issues and challenges in computer science education across a wide range of institutions. It includes suggestions for improving the quality and effectiveness of computer science and engineering education at the undergraduate, graduate, and K-12 levels. It argues strongly for the creation of a Resource Center for the development and distribution of computer science and engineering curricular materials, educational tools, and other support that could be shared by many institutions.

Categories and Subject Descriptors: K.3.2 [Computing Milieux]: Computer and Information Science Education

1. Introduction
2. Background
3. Areas of concern in CS&E education
3.1. General curriculum issues
3.2. Undergraduate education
3.3. Graduate education
3.4. K-12 education
3.5. Coordination within the education community
4. Creating a center for CS&E education
Education Working Group Members

1. Introduction

Academia and computing technology are both changing rapidly. Public support for universities and the traditional balance between research and teaching have come under increased scrutiny and criticism. At the same time, modern society grows ever more dependent on computing technology and and many sectors of science and industry anticipate ongoing shortages of well-trained computer scientists and engineers.

The distance between the foundations of computing and its research and application frontiers is considerably shorter than in many other fields. As a result, the curriculum in computer science and engineering (CS&E) faces constant evolutionary pressure to integrate new critical developments. The rapid changes in technology, however, also affect the process of educational delivery. Recent advances in networking and graphics, for example, make it possible to develop effective pedagogical tools that can be shared among many different educational institutions.

CS&E educators must play a key role in responding to these changes. To remain effective, CS&E education must evolve in both method and content as our discipline progresses. Educators need to champion new technologies that increase the quality of education, provide opportunities to a wider class of students, and prepare graduates to participate in the development of technologies that ensure the safety, privacy, empowerment, and competencies of future citizens. Meeting this challenge will require fundamental changes in the way in which faculties represent the principles and practice of CS&E, at all educational levels.

2. Background

Education in computer science and engineering has been an active area throughout much of the 50-year history of the discipline. Particularly since the establishment of the first computer science departments in the mid 1960s, considerable attention has been paid to the challenge of training students in this rapidly evolving field.

In 1968, the ACM published an extensive report on the computer science curriculum entitled Curriculum 68 [ACM68]. That report was subsequently updated in two reports issued at approximately 10-year intervals: Curriculum 78 [ACM78] and Curricula 91 [ACM/IEEE91]. The IEEE Computer Society (IEEE-CS) published an independent curriculum for computer science and engineering in 1983 [EAB83], and subsequently collaborated with the ACM on the Curricula 91 report. In addition, various organizations have issued several additional reports covering such issues as computer science in liberal arts colleges [Gibbs86, Walker96], the structure of the introductory courses [Koffman84, Koffman85], standards for accreditation [Mulder84, CSAB87], and secondary school curricula [ACM93, AP96].

Each year since 1970, the ACM Special Interest Group in Computer Science Education (SIGCSE) has held a symposium that attracts an increasingly larger audience over the year before. Computer science education has also proved a lively topic of discussion in Communications of the ACM, e.g., [Denning81, Denning84, Dijkstra89, Abelson95], as well as other computing forums.

One of the important strengths of the computer science education community is its willingness to experiment with diverse models of education. This diversity is most easily recognized in the design of the introductory curriculum, in which successful courses have been designed using each of the following models, in addition to the traditional one that emphasizes problem solving and programming:

Experimentation and development occurs at other levels of the curriculum as well. The Software Engineering Institute at Carnegie Mellon University, for example, has developed an entire undergraduate curriculum in software engineering [Ford90, Shaw90]. Faculty at many institutions have also created programs that can serve as models for computer science education in other schools.

Overall, the continuing importance of education as a strategic area in computer science and engineering (CS&E) research is reaffirmed both in the 1992 report Computing the Future [CSTB92], and by its appearance as a distinct subject area in the 1996 SDCR Workshop [SDCR96].

3. Areas of concern in CS&E education

The topic of education in computer science and engineering is too large to consider all at once. To make the topic manageable, our working group chose to distinguish the following five areas:

  1. General curriculum issues
  2. Undergraduate education
  3. Graduate education
  4. K-12 education
  5. Coordination within the education community

These areas are considered individually in the following subsections.

3.1 General curriculum issues

Computer science remains a rapidly evolving discipline [Tucker96], which places considerable pressure on the CS&E curriculum. The emergence of new tools, techniques, and paradigms forces a continual reevaluation of the topics covered and the pedagogical approaches used. Maintaining an up-to-date curriculum is particularly difficult for institutions because the pace of change in the discipline is so fast. As a result, the CS&E curriculum quickly becomes outdated as the technology advances.

One indication of obsolescence in the curriculum is the fact that many important topics have yet to find a niche in the core curriculum offered at many institutions. Examples of such topics include the object-oriented paradigm for problem solving, parallelism, networks, human-computer interaction, software design, software safety, and the social impact of technology. One way to address the lack of attention paid to these issues would be to update the knowledge units in Curricula 91 [ACM/IEEE91] so that they incorporate such contemporary core topics and themes, while eliminating concepts that have become outdated. Given that the ACM/IEEE-CS curriculum reports have traditionally been published only once in every decade, it is critical to establish a more responsive process that would allow the integration of new principles and artifacts soon after they emerge. A similar process for continually identifying and eliminating obsolescent topics from the core curriculum is also needed.

Because of the rapid pace of change in the discipline, it is imperative that computer science institutions develop better mechanisms for sharing educational resources. There is far too much reinvention and too little synergy throughout the educational community. For example, the proliferation of nearly-identical CS1 texts wastes time and creates too many low-quality results. We need to develop new mechanisms by which successful course materials can be more widely and economically shared.

As a possible starting point, the SIGCSE Web page [SIGCSE96] and the NSF Computer Science Courseware [NSF96] repository contain links to information on a variety of course materials that are available at different institutions. Some recent textbooks have similarly advised instructors about how to download supporting software and laboratory materials for use in their courses.

Although the World-Wide Web provides the underlying technology for sharing resources, such a system would not be effective without some level of more centralized support. If each institution simply publishes its materials independently, there will be no easy way for others to find the right materials in the vastness of the Web or to have any assurance about their quality. To create an effective repository, someone (or more likely, some group or agency) must take on the role of reviewer, both to filter the materials to a more manageable collection and to ensure that a high-level of quality is maintained.

3.2 Undergraduate education

Different institutions have different educational priorities and constituencies, and must therefore shape their programs accordingly. Some are driven more by industry's needs, while others are driven more by the general goals of liberal arts and science education.

Because of these differences, there is no common model that applies in all institutions. Despite those differences, there are nonetheless several problems that affect a wide range of institutions offering undergraduate programs in computer science. These problems are identified in the following paragraphs.

Too many institutions value research and fundraising by faculty at the expense of sound and effective teaching. The relationship between education and research must be reexamined by college and university faculties, as well as the entire profession. New interactions between research, education, and industry are needed, so that students, faculty, and computing practitioners can maximize the utility of education throughout the broad range of intellectual and practical interests that it serves. Standards for promotion and tenure must change to make teaching an exciting and higher-priority activity for faculty, alongside research and consulting. To this end, institutions must find ways to recognize and value faculty efforts toward pedagogical and curriculum innovation, especially when it has broad impact at other institutions.

Because computer science changes so rapidly, it is imperative that faculty remain actively engaged in the discipline via a continuing scholarly activity throughout their careers. Depending on the institution and the individual, this might mean conducting research in traditional areas, developing new courses or teaching materials based on recent progress in the discipline, or conducting research in "nontraditional" areas such as curriculum and teaching methodologies themselves. Institutions that strongly emphasize teaching must moderate their teaching loads and increase their real support for scholarly activities such as these. Opportunities for continued faculty development should be provided through short courses and tutorials, which would be available at conferences and in summer workshops. Internships in industry or research-oriented university settings should also be available, so that faculties at teaching-oriented institutions can remain current.

Many institutions give insufficient consideration to the needs of industry, which employs most of the graduates in CS&E. Undergraduate course design should take into account the requirements of industry while maintaining a commitment to sound pedagogical practice. The introductory courses should emphasize fundamental principles in the discipline, while advanced courses should often have applications as a strong theme. The breadth of the discipline should be taught early in the curriculum, but not at the expense of a solid introduction to programming that incorporates problem solving, software engineering, and design. Hands-on design is an empowering and essential experience for all undergraduates. A senior-level design course or capstone research experience should be required for all undergraduate majors [Cupper96]. Such a course should aim to give students hands-on experience with solving a significant real-world problem or confronting a contemporary research issue.

Topics in the theory of computing need to be integrated with practical topics in the curriculum at all levels, beginning with the first course. Examples include the discussion of semantics in programming languages, verification issues in software engineering, theory issues in databases, and unsolvability in algorithms. Faculties should also look for opportunities to repackage traditional subjects in the discipline, including theoretical concepts, and present them in new and engaging ways. Lab exercises and textbook examples should reflect the broadest range of student concerns and contemporary life experiences.

The management of large classes is a serious problem in many programs. Lectures alone, without student interaction in small groups and laboratories, are an inadequate learning mechanism for CS&E education.

Education and training of computer professionals should be more widely accepted as a regular part of the academy. While professional training is already an important mission of community colleges, many undergraduate programs should also provide practical courses for part-time and evening students, as appropriate to their individual missions and the needs of their local communities.

Because students come to CS&E with a wide range of learning styles and backgrounds, faculty should look for opportunities to develop teaching methods, lab materials, and technologies that appeal to as broad a collection of students as possible. We must view changes in pedagogy as opportunistically as we view changes in research specialties. CS&E educators have been slow to take advantage of new methods in teaching, and many of our current methods are not ideally suited to encouraging across-the-board new student interest in the field.

New curricula should be developed that stress the interactions between computer science and other disciplines. For instance, interdisciplinary major programs involving the natural sciences, economics, and psychology can be developed within the setting of a concentration in computer science. Some early progress of this sort is being made in the area of computational science [VanLoan96].

Service courses for nonmajors need to be strongly supported and continually upgraded. At many institutions, first courses serve the interests of a mixed audience of majors and nonmajors. The interests of nonmajors in the field of CS&E are increasingly strong and sophisticated. These interests ought to be recognized by the development of new course materials and effective teaching strategies [Kelemen96].

3.3 Graduate education

Priorities in Master's and Ph.D granting institutions are as varied as those in undergraduate programs. Although graduate departments do change curricula and courses, the nature of research-oriented Ph.D. granting institutions requires that faculty stay abreast of the most recent trends in their fields in order to be productive researchers and move forward with tenure and promotion.

At the same time, the climate at institutions with graduate programs is changing. Government funding levels for research have significantly decreased and indications suggest that further reductions will occur. Universities may need to develop closer ties with industry to maintain appropriate levels of research funding in the future. These changes may engender changes in the educational and research missions of some CS&E graduate programs. Thus, CS&E graduate programs face several unique challenges which are identified in the paragraphs below.

New Ph.D.s will be increasingly employed by industry rather than academia. The most recent Taulbee Survey [Taulbee95] indicates that roughly 60% of new Ph.D.s are employed by industry and government rather than academia. At the same time, the number of positions available in CS&E departments decreased from 1994 to 1995 and has remained constant since then. In an era of fiscal retrenchment at the university level, it is reasonable to expect that the proportion of Ph.D.s employed by academia will decline. As academic departments develop closer ties with industry, this may affect course offerings and curricula. However, many Ph.D.s are hired by industry because of their ability to see a difficult project through to completion as much as for their expertise in a subject area. Thus, although there will be closer ties with industry, we see graduate education as a continuing source of strength for departments although funding may come from different sources.

Approximately 30% of new Ph.D.s who take positions in academia are hired by departments without graduate programs, and yet few are prepared for the particular balance of academic priorities that these departments value. Many universities with graduate programs are beginning to put an increased emphasis on educational initiatives as a source of funding, both because undergraduate tuition is a large portion of their budgets and because of increased pressure from students and external sources. Training in teaching and coping with new jobs requires more planning and resources than most PhD-granting departments currently provide. Departments must place a new emphasis on teaching these skills, both to their graduate students and to many of their own faculty.

Industry demand for MS degrees in computing will increase steadily. Although the number of Ph.D.-granting programs has not risen in recent years, more departments are offering Master's degrees, especially where local industry provides the demand. In response, course-only or non-thesis/non- project Master's degrees may become more common. Some departments will need to consider providing a different balance between research and applied activities, as research takes a smaller role in their programs. Professional education should thus be widely accepted as a regular part of the academy. Some graduate programs should provide courses for part-time and evening students, in accordance with the needs of their local communities. The audience for such courses would include industry professionals and educators whose technical knowledge needs to be updated or broadened in new directions.

3.4 K-12 education

The following issues apply specifically to the primary and secondary school levels of computing education, although some of these ideas may have relevance to the undergraduate curriculum as well.

No coherent secondary-school curriculum is widely implemented for the general population. In the natural sciences and mathematics, the high-school curriculum is relatively well established. We believe it is important to implement a similar curriculum for computer science that identifies the "great ideas" in the computing and how these ideas affect the world in which we live. It should follow the ideas presented in the ACM Model High School Curriculum [ACM93], which introduces the discipline broadly. The current AP curriculum [AP96] serves a more narrow purpose, and does not satisfy the need in this area.

No mechanisms exist to train teachers in the new technology or to keep them up to date with the field. The biggest obstacle to teaching computer science in secondary schools is the lack of teachers with the appropriate skills and training. A substantial effort in this area is needed to address the problem. Students with college exposure to computer science need to be encouraged to consider teaching as a career, and new programs need to be instituted that would offer new teachers the appropriate training at the beginning of their careers. Moreover, teacher training must be broad enough for them to understand -- and communicate to their students and the public -- that CS&E encompasses a much broader range of subjects than programming.

The difference between the technological "haves" and "have-nots" is huge. There is a massive imbalance between the educational opportunities available to students in different school systems. Students in affluent school systems have many more opportunities to learn about technology than their counterparts in poorer districts. Moreover, even within a single school system, the gap between educators and administrators who are comfortable with technology and those who are not is also wide. A major effort is needed to bring faculty and staff at all levels up to speed about computing technology, so that they can integrate it effectively into the widest range of curricular subjects.

New channels of communication and support are needed between college-level and pre-college educators. Activities like the ACM's undergraduate research award and high school programming contests need to be revitalized. New activities might include starting a high school-level computer science problems magazine, like the one for mathematics, or starting new in-service and pre-service summer courses in computer science for secondary school teachers.

3.5 Coordination within the education community

There are many computer science education communities whose interests are represented by different organizations, including the following:

AACE (advancement of computing in education)
ACM Education Board
ACM SIGCSE (Computer Science Education)
ACM SIGGRAPH Education Committee
ACM SIGCUE (Computer Uses in Education)
ACM SIGACT Education Committee
ACM Pre-College Committee
CCSC (Consortium for Computing in Small Colleges)
CEEB (AP Curriculum Committee)
CRA (Graduate education, faculty issues)
CSAB/CSAC (accreditation)
EDUCOM (computing and technology in higher education)
IEEE-CS Educational Activities Board
IFIP TC3 (International undergraduate curriculum committee)
ISTE Computer Science Society (technology in secondary school education)
LACS (Liberal Arts Computer Science Consortium)

Although these communities have many common interests, they do not interact much at all. At the moment, the members of the ACM Education Board are appointed entirely at the discretion of its chair. As a result, few of these different educational interests are directly represented at the highest levels within ACM. We believe that the ACM Education Board should modify its charter to ensure representation from all constituencies and promote a higher level of interaction among them. Such a change would create a more visible, representative, and proactive board that could provide leadership for the ongoing process of improving the quality of computer science education at all levels.

The Education Board should also seek to create new communication channels so that shared curricular concerns can be more effectively discussed. Moreover, the SIGCSE program committee should have representatives from the secondary school community (including the AP), the graduate school community, and the professional education community, alongside the already-well-represented undergraduate community. The recent decision to switch from Pascal to C++ as the programming language for the AP course is an excellent example of an issue in which better channels for interconstituency communication might have had a profoundly beneficial effect [Abelson95].

4. Creating a center for CS&E education

As its title makes clear, one of the major goals of the workshop on Strategic Directions in Computing Research [SDCR96] is for each working group to identify directions of work in their own discipline that are "strategic" in the sense that new investment in these areas would provide the greatest medium-term leverage for advancing the area as a whole. In seeking to apply this criterion to computer science education, our working group concludes that the most important strategic direction is to promote greater sharing of educational resources by exploiting the power of modern computing technology. In a sense, facilitating reuse of curricular developments and educational software constitutes a grand challenge for the CS&E education, in much the same way that reuse of software remains a grand challenge for software engineering.

Our vision is to develop a distributed, Internet-based center, tentatively called the CS&E Education Center, that would collect and promote the distribution of materials relevant to computer science education. The services provided by the CS&E Education Center would include the following:

A great deal of exploratory research is needed before this challenge can be effectively met. A central question is whether a CS&E Education Center can provide adequate and meaningful human interaction to support its educational functions. For instance, experts will need to answer student questions in a timely manner, as well as evaluate student work. The need for support will be great, both from public sources and from the industries that will benefit from these initiatives. Some new programs at the National Science Foundation (especially in the EHR Directorate) seem to be supporting explorations like the ones discussed above.

The establishment of a CS&E Education Center may emerge as an exciting, complex, and fundamentally important idea that can help ensure the future vitality and meaningful extension of computing education into the next millennium.

Education Working Group Members

Owen Astrachan, Duke University
Kim Bruce, Williams College
Robert Cupper, Allegheny College
Peter Denning, George Mason University
Scot Drysdale, Dartmouth College
Tom Horton, Florida Atlantic University
Charles Kelemen, Swarthmore College
Cathy McGeoch, Amherst College
Yale Patt, University of Michigan
Viera Proulx, Northeastern University
Roy Rada, Washington State University
Richard Rasala, Northeastern University
Eric Roberts, Stanford University
Steven Rudich, Carnegie Mellon University
Lynn Stein, MIT
Allen Tucker, Bowdoin College (Chair)
Charles Van Loan, Cornell University


Harold Abelson, Gerald Jay Sussman, Julie Sussman. Structure and Interpretation of Computer Programs. Cambridge, MA: The MIT Press, 1985.
Harold Abelson, Kim Bruce, Andy van Dam, Brian Harvey, Allen Tucker, and Peter Wegner, with response by Susan Horwitz, Kenneth Appel, Theresa Cuprak, David Kay, Christopher Nevison, Leon Schram, Mark Stehlik, and Owen Astrachan. The first-course conundrum. Communications of the ACM, June 1995.
ACM Curriculum Committee on Computer Science. Curriculum 68: Recommendations for the undergraduate program in computer science. Communications of the ACM, March 1968.
ACM Curriculum Committee on Computer Science. Curriculum 78: Recommendations for the undergraduate program in computer science. Communications of the ACM, March 1978.
ACM/IEEE-CS Joint Curriculum Task Force. Computing Curricula 1991. ACM Press, New York, 1991. Abridged versions reprinted in Communications of the ACM (June 1991) and IEEE Computer (November 1991).
Task Force of the Pre-College Committee of the Education Board of the ACM. ACM model high school computer science curriculum. Communications of the ACM, May 1993.
College Entrance Examination Board. Advanced Placement Computer Science Curriculum, Educational Testing Service, 1996.
Owen L. Astrachan. A Computer Science Tapestry: Exploring Computer Science and Programming with C++. New York: McGraw-Hill, to appear in 1996. Preliminary information is available from http://www.cs.duke.edu/~ola/book.html.
Computer Sciences Accreditation Board. Criteria for accrediting programs in computer science in the United States. Technical report, January 1987.
Computer Science and Telecommunications Board. Computing the Future: A Broader Agenda for Computer Science and Engineering. National Academy Press, Washington, DC, 1992.
D. Brookshire Conner, David A. Niguidula, Andries van Dam. Object-Oriented Programming in Pascal. Reading, MA: Addison-Wesley, 1995.
Robert D. Cupper. Capstone courses in computer science at Allegheny College. presented at the 13th LACS Summer Meeting, Dartmouth College, July 1996.
Rick Decker and Stuart Hirschfield. The Object Concept: An Introduction to Computer Programming Using C++. Boston: PWS Publishing Company, 1995.
Peter J. Denning. Eating our seed corn. Communications of the ACM, June 1981.
Peter J. Denning. Educational ruminations. Communications of the ACM, October 1984.
Peter J. Denning, Douglas E. Comer, David Gries, Michael Mulder, Allen B. Tucker, A. Joe Turner, and Paul R. Young. Computing as a discipline. Communications of the ACM, January 1989.
Edsger W. Dijkstra, with responses by David L. Parnas, William L. Scherlis, M. H. van Emden, Jacques Cohen, Richard W. Hamming, Richard W. Karp, and Terry Winograd. On the cruelty of really teaching computer science. Communications of the ACM, December 1989.
Educational Activities Board. The 1983 model program in computer science and engineering. Technical Report 932, Computer Society of the IEEE, December 1983.
Gary Ford. 1990 SEI Report on Undergraduate Software Engineering Education. Software Engineering Institute Technical Report CMU/SEI-90-TR-3, March 1990.
Steve Freund and Eric Roberts. Thetis: An ANSI C programming environment designed for introductory use. Proceedings of the Twenty-seventh SIGCSE Technical Symposium on Computer Science Education, Philadelphia, Pennsylvania, February 1996.
Norman E. Gibbs and Allen B. Tucker. Model curriculum for a liberal arts degree in computer science. Communications of the ACM, March 1986.
Chuck Huff and C. Dianne Martin. Computing consequences: A framework for teaching ethical computing. Communications of the ACM, December 1995.
Charles F. Kelemen. SDCR position statement on the first course for nonmajors http://www.bowdoin.edu/~allen/sdcr/kelemen.html.
Elliot P. Koffman, Philip L. Miller, and Caroline E. Wardle. Recommended curriculum for CS1: 1984 a report of the ACM curriculum task force for CS1. Communications of the ACM, October 1984.
Elliot P. Koffman, David Stemple, and Caroline E. Wardle. Recommended curriculum for CS2: 1984 a report of the ACM curriculum task force for CS2. Communications of the ACM, August 1985.
Michael C. Mulder and John Dalphin. Computer science program requirements and accreditation -- an interim report of the ACM/IEEE computer society joint task force. Communications of the ACM, April 1984.
National Science Foundation. NSF computer science courseware repository. http://www.education.siggraph.org/nsfcscr/nsfcscr.home.html.
Yale N. Patt. SDCR position statement on the first course http://www.bowdoin.edu/~allen/sdcr/patt.html.
Viera K. Proulx, Richard Rasala, and Harriet Fell. Foundations of Computer Science: What Are They and How Do We Teach Them?. Proceedings of the SIGCSE/SIGCUE Joint Conference on Integrating Technology in Computer Science Education, Barcelona, Spain, June 1996.
Roy Rada. SDCR position statement on the Virtual Computing College http://www.eecs.wsu.edu/~rada/research/papers/sdcr.htm.
Richard Rasala, Viera K. Proulx, and Harriet J. Fell. From Animation to Analysis in Introductory Computer Science. Proceedings of the ACM Computer Science Conference, Phoenix, AZ, March 1994.
Eric Roberts. Using C in CS1: The Stanford experience. Proceedings of the Twenty-fourth SIGCSE Technical Symposium on Computer Science Education, Indianapolis, Indiana, February 1993.
Eric Roberts. The Art and Science of C. Reading, MA: Addison-Wesley, 1995.
Eric Roberts. Tools for creating portable demonstration programs. Proceedings of the SIGCSE/SIGCUE Joint Conference on Integrating Technology in Computer Science Education, Barcelona, Spain, June 1996.
Steven Rudich. CS1: How to Think Like a Computer Scientist. http://www.cs.cmu.edu/~rudich.
ACM Workshop on Strategic Directions in Computing Research. MIT, June 1996. http://www.medg.lcs.mit.edu/sdcr.
ACM Special Interest Group on Computer Science Education (SIGCSE). Computer Science Education Links. http://www.ucs.usl.edu/~ram1335/edlinks.html.
Mary Shaw. Prospects for an Engineering Discipline of Software. IEEE Software, November 1990.
Lynn A. Stein. Rethinking CS101: Innovations in introductory computer programming. http://www.ai.mit.edu/projects/cs101.
1995 Taulbee Survey. accessible via the CRA home page: http://www.cra.org .
Allen B. Tucker, Andrew Bernat, W. James Bradley, Robert D. Cupper, and Greg W. Scragg. Fundamentals of Computing I: C++ Edition. New York: McGraw-Hill, 1995.
Allen B. Tucker, W. James Bradley, Robert D. Cupper, Richard G. Epstein, and Charles F. Kelemen. Fundamentals of Computing II: C++ Edition. New York: McGraw-Hill, 1995.
Allen B. Tucker and Peter Wegner. Computer Science and Engineering: the Discipline and Its Impact. to appear in CRC Handbook of Computer Science and Engineering. CRC Press, Boca Raton, December 1996. http://www.crcpress.com/prods/2909.htm .
Charles Van Loan. Introduction to Computational Science. Addison-Wesley, 1996.
Walker, Henry and G. Michael Schneider. Revised model curriculum for a liberal arts degree in computer science. Communications of the ACM, December 1996 (to appear).

Permission to make digital or hard copies of part or all 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, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or permissions@acm.org.