Computer Science Curriculum Development
We the faculty members of the Science and Math disciplines are interested in creating a Computer Science curriculum at Bennington College. Over FWT '06 we plan to meet and discuss this, with the objective of proposing to the College administration the formation of a full-time CS curriculum.
What follows are my (Joe Holt's) notes and thoughts on the subject. There are questions that I asked myself and to which I tried to provide answers. I also did a bit of data-gathering research to prepare us for this discussion. I compiled an oral history of computer science education at Bennington, and I looked closely at the CS offerings at other liberal arts schools.
Of particular interest are the documents
Computing Curricula 2001 and
LACS 2004 Model Curriculum.
CC2001 was developed jointly by the Computer Society of the Institute for Electrical and Electronic Engineers (IEEE-CS) and the Association for Computing Machinery (ACM), and outlines their curricular guidelines for undergraduate programs in computing.
LACS2004 was developed by the Liberal Arts and Computer Science Consortium (LACS) adapting
CC2001 to a liberal arts education. These documents are long, but much can be gleaned by scanning the bulleted items on page 12 and browsing page 17 of
CC2001, and reading the introductory sections of
LACS2004 to see how it all fits.
Questions
What is Computer Science?
"Computer Science is not a science, and its ultimate significance has little to do with computers. Its essence might best be called procedural epistemology
—the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Traditional mathematics provides a framework for dealing precisely with notions of 'what is.' Computation provides a framework for dealing precisely with notions of 'how to.'" — Gerald Sussman, EECS Professor, MIT
"Computer science is the study of information, and of the structures that communicate, store, and process information. Whether these structures are expressed in hardware and called machines, in software and called programs, or in nature or society, the fundamental concepts are similar." — California Institute of Technology
"Computer science is the study of algorithms, including 1. their formal and mathematical properties; 2. their hardware realizations; 3. their linguistic realizations; 4. their applications." — Allen Tucker, CS Professor, Bowdoin College
"At MIT one starts out by learning about dealing with complexity and abstraction, and goes on to study computer architecture (how to design computer systems), artificial intelligence, modeling, and theory. There is quite a bit of advanced mathematics. Computer Science studies how to make computers faster, more efficient, and more intelligent." — Massachusetts Institute of Technology
"I remember Jerry Wiesner [MIT President 1971-1980] asking me what is computer science and as I was explaining he fell asleep on me, literally." — Robert Fano, Professor, MIT
Computer science education is usually sub-divided into Theoretical Computer Science, Software Engineering, Computer (or Hardware or Electrical) Engineering, and Information Technology (or Systems). This distinction is exclusively academic and is enthusiastically ignored by the professional sector. Programmers are sometimes called Computer Scientists and other times Software Engineers. "Information Technology" in universities refers to the deeper meanings of information and its representation and manipulation, but in the job market it means plugging in phones.
The curious thing about these categories is that they pay short shrift to the whole point of Computer Science: applications. How to develop a real project that actually does something useful. More on this in a bit.
What does a traditional Computer Science education look like?
See the PDF
Computing Curricula 2001. This is the standard by which many schools design their curricula. I'll try to summarize it later.
How does Computer Science fit into a Liberal Arts education?
[From
LACS 2004, "The Liberal Arts Landscape" and "Computer Science Programs in the Liberal Arts".]
Liberal arts programs in computer science generally emphasize multiple perspectives of problem solving (from computer science and other disciplines), theoretical results and their applications, breadth of study, and skills in communication. In addition to the material content of computer science, the algorithmic approach is a very general and powerful method of organizing, synthesizing, and analyzing information. Three general-purpose capabilities that are among those fundamental to a liberal arts education are the abilities to:
- Organize and synthesize ideas,
- Reason in a logical manner and solve problems,
- Communicate ideas to others.
The design, expression, and analysis of algorithms and data structures draw upon and contribute significantly to the development of all three.
Liberal arts computer science programs de-emphasize specific technical details, with the understanding that the half-life of software engineering knowledge is short. This environment leads to a balance of courses perhaps quite different from other types of programs. A typical liberal arts curriculum in computer science consists of:
- Computer science courses: about 30%
- Mathematics courses: about 10%
- Other science courses: 5 - 10%
- Non-science (e.g., humanities, social science) courses: 50 - 55%
Overall, a computer science program in a liberal arts setting typically requires about 40% of a student's undergraduate program (including math). While this balance places limits on the number of computer science courses (e.g., only 8 - 12 required 4-credit courses for the major), core topics can be covered well, and students have considerable contact with non-science courses that promote breadth, communication, teamwork, and multiple perspectives. Computing courses themselves often integrate views of mathematics, science, and engineering. Together, such breadth integrates in a fundamental way several qualities that have emerged as essential for computing professionals: effectiveness of writing and speaking, group interaction, and understanding client perspectives.
This perspective on the discipline and the educational environment leads to the following goals for an undergraduate program in computer science taught in a liberal arts program:
- To enable understanding the capabilities, limitations, and ramifications (technical, ethical, and social) of computing, the state of the art, and current research and development in computer science and related areas;
- To develop an ability to understand and analyze client needs, master the techniques of creating and applying algorithms and data structures, and analyze their viability, correctness, and efficiency utilizing analytical methods and appropriate theoretical results;
- To become effective at working individually and in teams, building on the work of others, and be able to communicate technical information to both experts and non-experts;
- To prepare for adapting to changes in hardware and/or software technologies, and new and changing application areas through an appreciation of the need for life-long learning;
- To enable an appreciation of both the demands and range of opportunities of the computing profession and provide for and encourage creative contribution to the art.
In particular, students should:
- Understand multiple views of problem solving (e.g., 2 or 3 of imperative, object-oriented, functional, declarative);
- Have experience applying theoretical results to solving practical problems;
- Be able to apply critical thinking and problem solving skills across disciplines;
- Have experience with at least one large, team-based project or research project;
- Understand non-scientific perspectives and have sufficient background to be able to communicate effectively with people with those perspectives;
- Recognize the importance of social and ethical issues in computing.
What is unique about Bennington's Liberal Arts education?
"At Bennington we [teachers] are not practitioners turned teachers for a few hours each day; we are models of the real thing, the genuine article: scientists, social scientists, creative artists who are able—indeed, are pledged—to enter the classrooms with no abatement of interest, no narrowing of subject matter, no displacement of sensibility. We teach what we teach from that most precious wellspring, our own genuine interest and enthusiasm. We teach what we know, and learn more as we teach." — Mary Oliver
Bennington emphasizes
making over
theorizing. Hence you don't just read in a literature class, you are required to do a substantial amount of writing. Hence there is no Art History curriculum per se, but instead the topics of Art History are blended into the practical curricula. Indeed, the process of
making that is typical of an Arts education is pushed into the pedagogy of the other disciplines.
What does Computer Science at Bennington look like?
There is less theory and more practice. The uses of Computer Science are emphasized earlier in the curriculum. In a traditional Computer Science education (including in liberal arts schools) much of the early years are spent on the theory of computation. At Bennington the students are making things from the beginning, with the theory and history concurrently taught in supporting roles. The emphasis is on using the knowledge.
This is especially true for cross-disciplinary practices. Everywhere you turn, computers and computing science are used (or could be used) within other disciplines. At Bennington, there is no "Computer Science for the sake of Computer Science." Instead, students jump on the strengths of the college (music, dance, sciences, literature, etc.) and ratchet them up with what they learn from Computer Science.
Any student plan that includes Computer Science is expected to have two qualities:
- It is in conjunction with another discipline (Computer Science and Music, etc.);
- It emphasizes practice rather than theory (drawing art with a program, developing music software, etc.).
History of Computer Science education at Bennington
Notes from a discussion among the Science faculty of the history of Computer Science education at Bennington College, October 2005.
Comparative Analysis
Reference Material
This document represents the final report of the Computing Curricula 2001 project (CC2001)—a joint undertaking of the Computer Society of the Institute for Electrical and Electronic Engineers (IEEE-CS) and the Association for Computing Machinery (ACM) to develop curricular guidelines for undergraduate programs in computing. The report continues a long tradition of recommendations for academic programs in computing-related fields dating back to 1965.
In 1986, guidelines for a computer science major degree program offered in the context of the liberal arts were developed by the Liberal Arts Computer Science Consortium (LACS). In 1996 the same group offered a revised curriculum reflecting advances in the discipline, the accompanying technology, and teaching pedagogy. In each case, the LACS models represented, at least in part, a response to the recommendations of the ACM/IEEE-CS. Continuing change in the discipline, technology, and pedagogy coupled with the appearance of Computing Curricula 2001 have led to the 2004 Model Curriculum described here.
Archives