Computer Science Department: Goals and Objectives
Computer science is the study of the theory and practice of computation. The field spans a variety of sub-fields, including computer hardware, networks, databases, operating systems, parallel processing, algorithms and data representation, and artificial intelligence and human language processing. It also extends into other disciplines, such as bioinformatics. As an academic program in computer science, as opposed to one in software engineering or information technology, our department's curriculum is designed, first, to provide students with a thorough understanding of the conceptual principles and foundations of the discipline, familiarize them with multiple perspectives on algorithmic problem solving, and foster their development of intellectual tools to analyze problems and recognize the common models and abstractions that underlie their solutions. Further, our curriculum helps students to develop programming skills that enable them to create and apply algorithms and data structures to practical problems, as well as methods by which to analyze the viability of those applications.
Computer science enables students in a liberal arts college to gain a broader perspective on the methods and applications of the discipline and to understand the impact of technology on other disciplines. Computer science integrates mathematics and other sciences; by considering issues such as the ethical and social ramifications of computing, computer science draws upon social science and humanities disciplines as well. This breadth integrates qualities that are now essential for computer scientists: the ability to understand non-scientific perspectives on computing, and to communicate technical information to experts and non-experts alike. Also, the appreciation of life-long learning fostered by a liberal arts education enables our students to prepare for and adapt to the rapid changes in technology and application. Vassar is known for its emphasis on inter- and multidisciplinary study. Students, therefore, often integrate their computer science studies with other fields.
Students learn these skills and perspectives in all of our courses. They also learn how to work individually and in teams, and to build on the work of others. Collaborative work helps students to develop the ability to communicate effectively and to consider the perspective of others, especially those who may not have a technical background. The process of building on others' work fosters similar skills by teaching students to appreciate the need for clarity and organization of thought.
In addition to the broad disciplinary goals outlined above, we want our majors and correlates to understand multiple views of problem solving; to experience the application of theoretical results to solving practical problems; to be able to apply critical thinking and problem solving skills across disciplines; to experience large, team-based or research projects; to understand non-scientific perspectives and have sufficient background to communicate effectively with people with those perspectives; and to recognize the importance of social and ethical issues in computing.
The three tiers of our curriculum (100, 200, and 300 level) are designed to take the student through a clear development and integration of concepts and skills. The two 100-level introductory courses assume no background and provide a broad foundation in the field for students of any major. These courses introduce students to the basic tools and methods of computer science and give them an appreciation of the interplay of theory and practice in the field. Building on these, our 200-level courses continue to emphasize themes that affect the entire discipline, but also begin to focus on sub-areas of the field. Essential components of study at this level are collaborative work, the development of greater theoretical and mathematical sophistication, and the continued development of reasoning skills associated with mathematical maturity and insight. At the 300-level, the focus shifts to individual computer science sub-areas. At this level, everything that students have studied at the previous levels comes together, so that they can see how various concepts and methods are applied to practical problems.
Research activity demonstrates students' mastery of the material covered in the curriculum. We encourage students to take part in faculty-sponsored research during the academic year and/or to seek out similar opportunities over the summer. Recognition of the importance of research experience has led us to institute a senior thesis option, required for honors, which involves an experimental or a theoretical project and demands demonstration of written and oral communication skills.