专业详情
The Department of Computer Science offers both B.S. and B.A. degree programs, as well as four combined majors in cooperation with other departments: Electrical Engineering and Computer Science, Computer Science and Economics, Computer Science and Mathematics, and Computer Science and Psychology. Each major program not only provides a solid technical education but also allows students either to take a broad range of courses in other disciplines or to complete the requirements of a second major.
The Computer Science and combined major programs share a common core of five computer science courses. The first is CPSC 201, a survey that demonstrates the breadth and depth of the field to students who have taken the equivalent of an introductory programming course. The remaining core courses cover discrete mathematics (CPSC 202), data structures (CPSC 223), systems programming and computer architecture (CPSC 323), and algorithm analysis and design (CPSC 365, or CPSC 366). Together these courses include the material that every major should know.
The core courses are supplemented by electives (and, for the combined majors, core courses in the other discipline) that offer great flexibility in tailoring a program to each student’s interests. The capstone is the senior project (CPSC 490), through which students experience the challenges and rewards of original research under the guidance of a faculty adviser.
Prospective majors are encouraged to discuss their programs with the director of undergraduate studies (DUS) as early as possible.
Introductory Courses
The department offers a broad range of introductory courses to meet the needs of students with varying backgrounds and interests. Except for CPSC 200 and CPSC 201, none assumes previous knowledge of computers.
- CPSC 100 is taught jointly with Harvard University, and teaches students majoring in any subject area how to program a computer and solve problems. No prior programming experience is required. Students with previous programming experience should consider taking CPSC 201 instead. This course satisfies the Quantitative Reasoning distributional requirement.
- CPSC 112 teaches students majoring in any subject area how to program a computer and solve problems using the language Java. No prior programming experience is required. Students with previous programming experience should consider taking CPSC 201 instead. This course satisfies the Quantitative Reasoning distributional requirement.
- CPSC 134 provides an introduction to computer music, including musical representations for computing, automated music analysis and composition, interactive systems, and virtual instrument design.
- CPSC 150 explores how some of the key ideas in computer science have affected philosophy of mind, cognitivism, connectionism, and related areas. This humanities-style course requires a significant amount of reading and writing a paper, and satisfies the Writing and the Humanities and Arts distributional requirements.
- CPSC 151 studies the history of the graphical user interface in an attempt to guess its future. This course also satisfies the Writing distributional requirement.
- CPSC 183 explores the myriad ways that law and technology intersect, with a special focus on the role of cyberspace. This course satisfies the Social Science distributional requirement.
- CPSC 184 focuses on the evolving and oftentimes vexing intellectual property regime of the new digital age. This course satisfies the Social Science and the Humanities and Arts distributional requirements.
- CPSC 200, intended as a survey course for nonmajors, focuses on practical applications of computing technology while examining topics including computer hardware, computer software, and related issues such as security and software engineering. This course satisfies the Quantitative Reasoning distributional requirement.
- CPSC 201 teaches the basic concepts, techniques, and applications of computer science, including systems (computers and their languages) and theory (complexity and computability). Students with sufficient programming experience may elect CPSC 201 without taking CPSC 112. (These courses meet at the same time so that students are easily able to change levels if necessary.) This course satisfies the Quantitative Reasoning distributional requirement.
- CPSC 202 presents the formal methods of reasoning and the concepts of discrete mathematics and linear algebra used in computer science and related disciplines. This course satisfies the Quantitative Reasoning distributional requirement.
- CPSC 210 examines the political challenges wrought by massive increases in the power of computational and communication technologies and the potential for citizens and governments to harness those technologies to solve problems. This course satisfies the Social Science distributional requirement.
Requirements of the Major
The B.S. and the B.A. degree programs have the same required five core courses: CPSC 201; CPSC 202 or MATH 244; CPSC 223; CPSC 323; and CPSC 365 or 366.
B.S. degree program The B.S. degree program requires a total of twelve term courses: the five core courses, six intermediate or advanced courses in Computer Science, and the senior requirement.
B.A. degree program The B.A. degree program requires a total of ten term courses: the five core courses, four intermediate or advanced courses in Computer Science, and the senior requirement.
Combined B.S./M.S. degree Exceptionally able and well-prepared students may complete a course of study leading to the simultaneous award of the B.S. and M.S. degrees after eight terms of enrollment. General eligibility requirements are described in the Academic Regulations, section L, Special Academic Arrangements, “Simultaneous Award of the Bachelor’s and Master’s Degrees.” Specific requirements for the combined degree in Computer Science are as follows:
- Candidates must satisfy the Yale College requirements for the B.S. degree in Computer Science.
- At the end of their fifth term of enrollment candidates must have earned at least nine of their Computer Science required course credits, which together with three additional Computer Science required course credits, satisfy the requirements for the B.S. in Computer Science. Candidates must also have achieved A grades in at least three quarters of these courses.
- Candidates must also complete eight graduate courses from the approved list, up to two of which may, with the permission of the DUS and the director of graduate studies, also be applied toward completion of the B.S. degree. At most, one of these eight courses may be CPSC 690, 691, or 692. All eight graduate courses must be completed in the final four terms of enrollment, and at least six of them must be completed in the final three terms of enrollment.
Credit/D/Fail Courses taken Credit/D/Fail may not be counted toward the major. All courses in the major must be taken for a letter grade.
Roadmap See visual roadmap of the requirements.
Senior Requirement
In the senior year students must take CPSC 490, an independent project course, in which a student selects an adviser to conduct original research with substantial work in a subfield of computer science. With permission of the DUS, students may enroll in 490 more than once or before their senior year.
Advising
All Computer Science majors in the sophomore, junior, and senior years should review their programs with their class advisers and the DUS. Students majoring in Computer Science are advised to complete CPSC 201 and 223 by the end of the sophomore year.
Electives The field of computer science has broadened substantially in the last few decades and the Computer Science department advises its majors to choose intermediate and advanced electives covering the breadth of computer science, including theoretical computer science; computer systems and languages (e.g., operating systems, database, networking, systems security, programming languages); and computer applications (e.g., artificial intelligence, computer graphics, computer vision, natural language processing, robotics).
The Computer Science department encourages interdisciplinary study in which computer science plays a major role. Advanced courses in other departments that involve concepts from computer science and are relevant to an individual program may, with permission of the DUS, be counted toward the requirements, but no more than two such courses may be counted toward the B.S., and no more than one toward the B.A.
Students interested in using computers to solve scientific and engineering problems are advised to take CPSC 440 as well as computational courses offered in Applied Mathematics and in Engineering and Applied Science.
The core mathematical background necessary to complete the Computer Science major is provided in CPSC 202. However, many advanced courses in graphics, computer vision, neural networks, and numerical analysis assume additional knowledge of linear algebra and calculus. Students who plan to take such courses as electives and who are unsure whether they have the appropriate mathematical background are encouraged to take MATH 222 or 225, MATH 226, and MATH 120.