The major in computer science is designed to introduce students to the two fundamental questions of the discipline: What computational tasks is a computer capable of doing? How can we design, analyze, and implement efficient algorithms to solve large, complex problems? Thus, the discipline requires thinking in both abstract and concrete terms and the major provides an opportunity for students to develop the analytical skills necessary for efficient algorithm design as well as the practical skills necessary for the implementation of those algorithms. The range of problems that can be attacked using the techniques of computer science spans many disciplines, and computer scientists often become proficient in other areas. Examples of areas that students can study in the department include network security, cyber-attack recovery, geographic information systems, computing with massive data sets, cognitive science, robotics, swarm intelligence, and artificial intelligence and the arts. The computer science major can serve as preparation for graduate study in computer science as well as careers in teaching, research, and industry (such as financial services and Internet-related businesses).
Requirements for the Major in Computer Science
The major consists of ten computer science courses: Introduction to Computer Science (Computer Science 101); Data Structures (Computer Science 210), Algorithms (Computer Science 231), and seven elective courses at the 200 level or above that satisfy the following requirements: at least one course in each of the areas Algorithms and Theory, Artificial Intelligence, and Systems; at least one course designated a Projects course; and at least four 300-level courses. Independent studies (except those enrolled in as part of an honors project) may be used to satisfy one of these elective requirements. Prospective majors should take Computer Science 210 as soon as possible after Computer Science 101, since this course is a prerequisite for many other computer science courses. Students, particularly those who intend to do graduate work in computer science or a related field, are encouraged to collaborate with faculty on research projects through independent studies, honors projects, and fellowship-funded summer research. These students are also encouraged to take courses in the mathematics department; courses of particular interest are Mathematics 200, 201, 204 (same as Biology 174), 224, 225, 229, 232, 244, 252, 258, and 265.
Computer science shares interests with a number of other disciplines, e.g., probability and statistics in mathematics, logic in philosophy, and cognition in psychology. In addition, computers are increasingly being used as a tool in other disciplines, including the social sciences and the humanities as well as the natural sciences. The department encourages students to explore these relationships; courses that may be of particular interest include the mathematics courses listed above; Music 218; Philosophy 210, 223, and 233; Psychology 216 and 270; and Visual Arts 255 (same as Biology 202).
Requirements for the Minor in Computer Science
The minor consists of five courses: Computer Science 101, Computer Science 210, and any three additional computer science courses at the 200 level or above.
The department participates in an interdisciplinary major program in computer science and mathematics. See the section on Interdisciplinary Majors.
To fulfill the major or minor requirements, or to serve as a prerequisite for another computer science course, a grade of C- or better must be earned in a course. Courses taken to fulfill major or minor requirements must be taken on a graded basis (not Credit/D/Fail).