Introduction
The world of IT is changing fast around us, raising questions about the up-to-dateness of the education provided by CS departments in US Universities and abroad. Many CS departments have also seen after the dot.com bust a sharp decline in their enrollments, even though IT employment has not declined and is predicted to grow fast. This has raised further doubts about current programs. ACM is defining five different computing disciplines: Computer Science, Computer Engineering, Information Systems, Information Technology and Software Engineering. In actuality, there is much overlap between these disciplines, and IS and IT programs are more often than not dumbed down versions of CS. Some schools, such as the Georgia Tech College of Computing, seem to be altogether dispensing with the idea that there is a Computer Science discipline, allowing students to complete a bachelor by taking two out of eight possible “threads”, and having “foundations” being merely one of the eight possible threads. These are signs of a discipline in crisis.
In this document, we shall briefly describe the state of the IT professions and our view of the CS discipline, and argue for a new, coherent focus for CS education.
What is Computer Science?
Computer Science is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. This broad definition includes several different flavors of research and education.
Computer Science as an engineering discipline:
Bill Wulf defined engineering as "design under constraint". CS is an engineering discipline, by this definition – but a discipline with a very distinct flavor: the artifacts designed by software engineers are mathematical artifacts (algorithms, protocols, or programs). CS is not rooted in the physical sciences: the main empirical constraints on the design of computing systems are economic, legal, social and cognitive. This raises questions about the relevancy of some of the engineering education and accreditation requirements.
Computer Science as an applied science discipline:
Computing and information processing system augment the cognitive abilities of human beings, allowing them to process information faster, compute faster or communicate faster. One should think of computers as prostheses to the mind, in that same sense that machines as prostheses to our body: artificial devices that replace or augment our brain. Such "prostheses" need to be specialized to their application domain; we have since long ceased to work on "universal artificial intelligence", in the same manner that mechanical engineers do not work on "universal machines". We design systems that are specialized to particular application domains. Applications are growing fast and are motivating an increasing fraction of CS research.
Computer Science as an ontology
Computer Science provides new abstractions for thinking about systems: we view them as information processing systems. Philosophers use the software-hardware dichotomy as a model for the mind-brain relation; biologists think of biological processes as information processing. Jeannette Wing describes this with the term "Computational Thinking"; the following is a citation from a paper she wrote:
". .. What do I mean by computational thinking? It includes a range of "mental tools" that reflect the breadth of our field. When faced with a problem to solve, we might first ask "How difficult would it be to solve?" and second, "What's the best way to solve it?" Our field has solid theoretical underpinnings to answer these and other related questions precisely. Computational thinking is reformulating a seemingly difficult problem into one we know how to solve, perhaps by reduction, embedding, transformation, or simulation. Computational thinking is type checking, as the generalization of dimensional analysis. Computational thinking is choosing an appropriate representation for a problem or modeling the relevant aspects of a problem to make it tractable. Computational thinking is using abstraction and decomposition when tackling a large complex task or designing a large complex system. It is having the confidence that we can safely use, modify, and influence a large complex system without understanding every detail of it. It is modularizing something in anticipation of multiple users or pre-fetching and caching in anticipation of future use. It is judging a system's design for its simplicity and elegance. It is thinking recursively … In short, computational thinking is taking an approach to solving problems, designing systems, and understanding human behavior that draws on the concepts fundamental to computer science."
These three views of CS suggest three fairly different cultures:
1. An engineering focus: in research, this means being concerned with impact on industrial practice; in education this means being concerned with professional skills.
2. An applied science focus: This means being concerned with multidisciplinary research and education, with CS being one of the ingredients, but not necessarily the motivating goal.
3. A fundamental science focus: This means a focus on theory, and an education that is less concerned with professional proficiency and more with a broadening of the mind.
These cultures coexist within CS, with some tensions.
The Changing Landscape of IT Professions
A recent Gartner report (Diane Morello, The IT Professional Outlook: Where Will We Go From Here?) makes the following predictions:
1) By 2010, six out of ten people affiliated with the IT organization will assume business-facing roles.
2) Through 2010, 30 percent of top technology performers will migrate to IT vendors and IT service providers.
3) By 2010, IT organizations in midsize and large companies will be at least 30% smaller than they were in 2005.
4) By 2010, ten to fifteen percent of IT professionals will drop out of the IT occupation.
5) By 2011, seventy percent of leading-edge companies will seek and develop “versatilists” while de-emphasizing specialists.
These predictions summarize well the changes happening in the IT professions: jobs involving only coding, in the narrow sense of translating a detailed specification into a programming language, are a decreasing small fraction of IT employment; these jobs are outsourced to low wage countries, or are made redundant by the use of higher-level tools and components. The jobs that stay in the country are jobs that are people oriented – in particular jobs that require “translating” the informally specified needs of people or organizations into formal specifications; jobs that require versatility; and jobs that require a higher level of abstraction and understanding of complex information handling processes, including the human in the loop – at the individual and social level.
Where should Undergraduate Computer Science Education Go?
I use the word “education”, not “training”. My focus, in this document, is on the education mission of research universities, their ability to shape minds and to provide foundations that enable alumni to continuously refresh their specific skills through a life-long career that will involve continuous change in technology and in employment; not on the specific skills that a student learn. Most companies expect the former from us, and expect to provide significant company specific training to their new employees.
CS education should not be dumbed down and should not become a smorgasbord of university courses; a strong, coherent, rigorous foundation is essential to the education of the engineer or the applied scientist. For a CS professional this foundation is about computational thinking: information, representation, computation, the ability to abstract the information processing component of systems – these, and the underlying mathematics of computation, are the foundation. This foundation is different than the usual foundations of engineering education that are found in calculus, the mathematics of continuous systems, and the physical sciences. But this different foundation should be taught no less rigorously than the foundations of physical sciences are taught.
Becoming a proficient programmer is part of the core CS education. Programming is the equivalent of a physics lab, for a science student: the practical activity that makes the theoretical framework concrete and helps assimilating the concepts and methods: it is an essential part of the education, even if the concrete skills learned are not reused. However, programming can be taught in a multitude of ways, at different levels, using different languages and packages – adapted to the interests of the student.
A large number of CS graduates will continue to work on core IT technologies: they will build the future software products of companies such as Microsoft, IBM, Oracle, Google, etc. These students need to receive, in addition to the foundation courses, the core engineering education that CS students normally receive now: the ability to program in low-level languages such as Java or C++, and a good understanding of computer architecture, programming languages, operating systems, networks, databases, etc.
A much large number will work more closely with users of the technology in various application domains. Such students will benefit from an education that provides a good foundation for their application domain of choice: accounting and management, for students focused on business applications; art and media, for students focused on media and entertainment applications; physical sciences, for students focused on scientific and engineering applications; cognitive sciences, for students focused on human-computer interactions; and so on.
Finally, every educated person will need a basic understanding of computing and information: “digitacy” becomes as important as “numeracy”. By “digitacy” I mean a basic understanding of the concepts of computational thinking and the ability to use these concepts. This is different from the basic ability to use computers for email, web browsing or word processing, to the same extent that numeracy is different from the ability to use a calculator.
A change in computer science education requires a concerted effort of the leading research universities; it also requires a change in accreditation standards. In particular, the general requirements of physics based engineering disciplines should not be applied to computer science, computer engineering or software engineering; and programs with a strong application focus should not only have a coherent curriculum in Computer Science, they also need a coherent, rigorous curriculum in the application domain.
Changes in Computer Science education should not only focus on the “what” – the curriculum been taught, but also on the “how” – how is knowledge imparted. CS students (as well as engineering students, in general) are often accused of being technically bright, but inarticulate and unable to collaborate well. It is important that our education provide more opportunities for collaborative, project oriented teaching, with projects involving people from various disciplines. Such projects force CS students to understand the language and the concepts of other disciplines, and to be able to make their language and their concepts accessible to other disciplines; it creates a healthy appreciation of the unique contributions that each discipline can bring to a complex project. Likewise, students will be better prepared to a global economy if they had opportunities to collaborate with students or developers from other countries on shared projects.
IT will profoundly reshape the modes of academic education in the coming decade. The generation that has learned to multitask with instant messaging and social networking environments, that has grown accustomed to have virtually unbounded amounts of information instantly available, this generation will be increasingly intolerant of our traditional modes of teaching. It behooves CS departments to be at the forefront of this change, if they wish to be perceived as relevant by their students.
Finally, it is important that the heavy requirements of a top technical education do not prevent students from participating in service and outreach activities, or have opportunities for entrepreneurial activities. The Engineering 2020 report of NAE said that a five year education may be needed to educate the engineer of the future. The same may apply to the IT professional of the future; the need for a more advanced education will become more pronounced as outsourcing makes entry level jobs scarcer. Five year bachelor/master programs may become more attractive, especially for students that want to have strong foundations in computing and in an additional application discipline.

0 comments:
Post a Comment