Computing Curricula 2001
Computer Science Volume
Chapter 11
Characteristics of CS Graduates
While consideration of the body of knowledge is one major issue in determining whether a specific program meets the necessary requirements to be called a computer science degree, other issues must also be addressed. Typically, these issues are concerned with the overall nature of the discipline, the breadth and depth of a program, plus other factors relating to practical, personal, and transferable skills.
In general terms, institutions are expected to define outcomes and objectives that characterize their particular programs and indicate that their curricula are at the level of a undergraduate degree in computer science. Degree programs in computer science can take various forms, each of which could prepare students for different but valid careers. At one extreme, a degree program might provide opportunities for students to take courses on a wide range of topics spanning the entire area of computer science. Graduates from such programs would have great flexibility and might be of particular value either in emerging areas where specialist courses may not be established or in contexts where their ability to span the field would be useful. At another extreme, a program might take one very specific aspect of computer science and cover it in great depth. The graduates from such programs would typically tend to seek opportunities in the area of specialization they have studied, whether it be the development of multimedia systems, network design, formal verification for safety-critical systems, electronic commerce, or other specialities that emerge and become important. Despite such differences in emphasis and content, however, there are certain minimal characteristics that are expected of any graduate in computer science. The purpose of this chapter is to explore what those characteristics should be.
The material in this chapter draws heavily on a report designed to identify the desired characteristics of computer science graduates in the United Kingdom [QAA2000]. Its purpose is to define standard thresholds that all graduates of computer science programs are expected to achieve. To a large extent, the characteristics for graduates outlined in the chapter cover the same ground as the curricular objectives outlined in the earlier chapters. The difference is primarily one of perspective. Looking at the objectives of an academic program in terms of the characteristics of its graduates makes it easier to design assessment measures that ensure that those objectives are being met.
While the characteristics that one expects of graduates are related to the learning objectives associated with the core units, the expectations one assigns to those who complete an undergraduate degree in computer science reflect a more global level of student achievement. The learning objectives detailed in Appendix A specify what a student must know at the conclusion of any particular unit. In this section, the goal is to identify the characteristics that a successful graduate should possess. At a broad level, these characteristics can be expressed as follows:
- System-level perspective. The objectives associated with individual units in the body of knowledge tend to emphasize isolated concepts and skills that can lead to a fragmented view of the discipline. Graduates of a computer science program must develop a high-level understanding of systems as a whole. This understanding must transcend the implementation details of the various components to encompass an appreciation for the structure of computer systems and the processes involved in their construction and analysis.
- Appreciation of the interplay between theory and practice. A fundamental aspect of computer science is the balance between theory and practice and the essential link between them. Graduates of a computer science program must understand not only the theoretical underpinnings of the discipline but also how that theory influences practice.
- Familiarity with common themes. In the course of an undergraduate program in computer science, students will encounter many recurring themes such as abstraction, complexity, and evolutionary change. Graduates should recognize that these themes have broad application to the field of computer science and must not compartmentalize them as relevant only to the domains in which they were introduced.
- Significant project experience. To ensure that graduates can successfully apply the knowledge they have gained, all students in computer science programs must be involved in at least one substantial software project. Such a project demonstrates the practical application of principles learned in different courses and forces students to integrate material learned at different stages of the curriculum.
- Adaptability. One of the essential characteristics of computer science over its relatively brief history has been an enormous pace of change. Graduates of a computer science program must possess a solid foundation that allows them to maintain their skills as the field evolves. Strategies for achieving this adaptability are described in section 11.3.
Students of computer science must develop a wide range of capabilities and skills. Some of those skills are specific to degrees in computer science; others are more generic and would be expected of any graduate of a technical discipline. These capabilities and skills may be divided into three general categories:
- Cognitive capabilities relating to intellectual tasks specific to computer science
- Practical skills relating to computer science
- Additional transferable skills that may be developed in the context of computer science but which are of a general nature and applicable in many other contexts as well
The required capabilities and skills are outlined in Figure 11-1. In each case, the institution must ensure that the skills in each of these categories -- cognitive, practical, and general -- receive sufficient coverage in the curriculum that all students will have had the necessary background prior to graduation.
Figure 11-1. Capabilities and skills for computer science graduates
Cognitive capabilities and skills relating to computer science
- Knowledge and understanding. Demonstrate knowledge and understanding of essential facts, concepts, principles, and theories relating to computer science and software applications.
- Modeling. Use such knowledge and understanding in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoff involved in design choices.
- Requirements. Identify and analyze criteria and specifications appropriate to specific problems, and plan strategies for their solution.
- Critical evaluation and testing. Analyze the extent to which a computer-based system meets the criteria defined for its current use and future development.
- Methods and tools. Deploy appropriate theory, practices, and tools for the specification, design, implementation, and evaluation of computer-based systems.
- Professional responsibility. Recognize and be guided by the social, professional, and ethical issues involved in the use of computer technology.
Practical capabilities and skills relating to computer science
- Design and implementation. Specify, design, and implement computer-based systems.
- Evaluation. Evaluate systems in terms of general quality attributes and possible tradeoffs presented within the given problem.
- Information management. Apply the principles of effective information management, information organization, and information-retrieval skills to information of various kinds, including text, images, sound, and video.
- Human-computer interaction. Apply the principles of human-computer interaction to the evaluation and construction of a wide range of materials including user interfaces, web pages, and multimedia systems.
- Risk assessment. Identify any risks or safety aspects that may be involved in the operation of computing equipment within a given context.
- Tools. Deploy effectively the tools used for the construction and documentation of software, with particular emphasis on understanding the whole process involved in using computers to solve practical problems.
- Operation. Operate computing equipment and software systems effectively.
Additional transferable skills
- Communication. Make succinct presentations to a range of audiences about technical problems and their solutions.
- Teamwork. Be able to work effectively as a member of a development team.
- Numeracy. Understand and explain the quantitative dimensions of a problem.
- Self management. Manage one's own learning and development, including time management and organizational skills
- Professional development. Keep abreast of current developments in the discipline to continue one's own professional development.
|
An essential requirement of any computer science degree is that it should enable graduates to cope with -- and even benefit from -- the rapid change that is a continuing feature of the computing field. But how does one achieve this goal in practice? At one level, the pace of change represents a challenge to academic staff who must continually update courses and equipment. At another level, however, it suggests a shift in pedagogy away from the transmission of specific material, which will quickly become dated, toward modes of instruction that encourage students to acquire knowledge and skills on their own.
Fundamentally, teaching students to cope with change requires instilling in those students an attitude that promotes continued study throughout a career. To this end, a computer science curriculum must strive to meet the following challenges:
- Adopt a teaching methodology that emphasizes learning as opposed to teaching, with students continually being challenged to think independently.
- Assign challenging and imaginative exercises that encourage student initiative.
- Present a sound framework with appropriate theory that ensures that the education is sustainable.
- Ensure that equipment and teaching materials remain up to date.
- Make students aware of information resources and appropriate strategies for staying current in the field.
- Encourage cooperative learning and the use of communication technologies to promote group interaction.
- Convince students of the need for continuing professional development to promote lifelong learning.
In seeking to define an appropriate set of objectives for computer science graduates, the authors of the UK benchmarking report [QAA2000] recognized that establishing a minimum standard may discourage both faculty and students from pushing for excellence beyond that minimum. To avoid this danger, the UK report provides benchmarking standards to assess various levels of achievement. At the lowest level, the report identifies a threshold standard consisting of a set of objectives that any graduate must be able to meet. The report goes on to identify a somewhat modal standard corresponding to the expected level of the average student.
Defining objectives for the threshold and modal standards represents a valuable opportunity for a department engaged in undergraduate computer science education. Setting such objectives makes it easier to understand the overall impact of the curriculum and makes it possible to assess the effectiveness of the educational process. While these objectives will certainly vary by the type of program and the characteristics of individual institutions, the objectives shown in Figure 11-2, which are adapted from the UK benchmarking report, may provide a useful model for local implementations.
Figure 11-2. Standards for achievement
Threshold standard representing the minimum level
- Demonstrate a requisite understanding of the main body of knowledge and theories of computer science.
- Understand and apply essential concepts, principles, and practices in the context of well-defined scenarios, showing judgment in the selection and application of tools and techniques.
- Produce work involving problem identification, analysis, design, and development of a software system, along with appropriate documentation. The work must show some problem-solving and evaluation skills drawing on some supporting evidence and demonstrate a requisite understanding of and appreciation for quality.
- Demonstrate the ability to work as an individual under guidance and as a team member.
- Identify appropriate practices within a professional, legal, and ethical framework.
- Appreciate the need for continuing professional development.
- Discuss applications based upon the body of knowledge.
Modal standard representing the average level
- Demonstrate a sound understanding of the main areas of the body of knowledge and the theories of computer science, with an ability to exercise critical judgment across a range of issues.
- Critically analyze and apply a range of concepts, principles, and practices of the subject in the context of loosely specified problems, showing effective judgment in the selection and use of tools and techniques.
- Produce work involving problem identification, analysis, design, and development of a software system, along with appropriate documentation. The work must show a range of problem solving and evaluation skills, draw upon supporting evidence, and demonstrate a good understanding of the need for quality.
- Demonstrate the ability to work as an individual with minimum guidance and as either a leader or member of a team.
- Follow appropriate practices within a professional, legal, and ethical framework.
- Identify mechanisms for continuing professional development and life-long learning.
- Explain a wide range of applications based upon the body of knowledge.
|
Even though these benchmarking standards are defined only for the minimum and the average, it is nevertheless important for programs in computer science to provide opportunities for students of the highest caliber to achieve their full potential. Such students will be creative and innovative in their application of the principles covered in the curriculum; they will be able to contribute significantly to the analysis, design, and development of systems which are complex, and fit for purpose; and they will be able to exercise critical evaluation and review of both their own work and the work of others. Inasmuch as human ingenuity and creativity have fostered the rapid development of the discipline of computer science in the past, programs in computer science should not limit those who will lead the development of the discipline in the future.