Computer Science
Computer
Science courses
Computer Science department home page
Director of undergraduate studies: Stanley Eisenstat, 208 AKW, 432-1246, stanley.eisenstat@yale.edu
FACULTY OF THE DEPARTMENT OF COMPUTER SCIENCE
Professors
Dana Angluin, James Aspnes, Julie Dorsey, Stanley Eisenstat, Joan Feigenbaum, Michael Fischer, David Gelernter, Paul Hudak, Gil Kalai (Adjunct), Ravindran Kannan, Drew McDermott, Willard Miranker (Adjunct), Vladimir Rokhlin, Holly Rushmeier, Martin Schultz, Zhong Shao, Avi Silberschatz (Chair), Daniel Spielman, Steven Zucker
Associate Professors
Brian Scassellati, Yang Richard Yang
Senior Lecturer
Robert Dunne
The Department of Computer Science offers both B.S. and B.A. degree programs, as well as combined majors with the Departments of Electrical Engineering (see Electrical Engineering and Computer Science), Mathematics (see Computer Science and Mathematics), and Psychology (see 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 201a or b, Introduction to Computer Science, 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; data structures; systems programming and computer architecture; and algorithm analysis and design.
The core courses are supplemented by electives (and, for the joint 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, through which students experience the challenges and rewards of original research under the guidance of a faculty mentor.
Prospective majors are encouraged to discuss their programs with the director of undergraduate studies 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. With the exception of CPSC 201a or b, none assumes previous knowledge of computers.
1. CPSC 101b introduces nonmajors to some of the central ideas in computer science, including algorithms, elementary programming, hardware, complexity, and representation of information.
2. CPSC 112a or b teaches students majoring in any subject area how to program a computer and solve problems using the language Java or C#. Students with previous programming experience should consider taking CPSC 201a or b instead.
3. CPSC 150a explores how some of the key ideas in computer science have affected philosophy of mind, cognitivism, connectionism, and related areas.
4. CPSC 156b studies how the Internet works and how it has affected daily life. Topics include e-mail, user privacy, online identity, and digital copyright.
5. CPSC 178a presents computer graphics and visualization tools as a medium for communication and discovery in science, engineering, business, and the arts.
6. CPSC 179b examines the methods used to define shapes, materials, and lighting in computer-generated images. Students create an animated video with rich visual effects. Proficiency in high school–level mathematics is assumed.
7. CPSC 180a or b studies the legal issues arising from the use of computers in contemporary society, particularly in the context of the Internet. No previous experience with law is assumed.
8. CPSC 201a or b surveys the field of computer science, including systems (computers and their languages) and theory (algorithms, complexity, and computability). Students with sufficient programming experience may elect CPSC 201a or b without taking CPSC 112a or b.
9. CPSC 202a presents the formal methods of reasoning and the concepts of discrete mathematics and linear algebra used in computer science and related disciplines.
Requirements of the major. The B.S. and the B.A. degree programs have the same required core courses: CPSC 201a or b; CPSC 202a or MATH 244a; CPSC 223b, 323a, 365b, and 490a or b. The B.S. degree program requires six additional intermediate or advanced courses in Computer Science, for a total of twelve; the B.A. degree program, four, for a total of ten. CPSC 480a or b and 490a or b may not be counted toward these electives. All courses in the major must be taken for a letter grade.
Students majoring in Computer Science are advised to complete CPSC 201a or b and 223b by the end of the sophomore year.
For students who already know how to program, typical B.S. programs starting in the freshman and sophomore years are:
|
Freshman
|
Sophomore
|
Junior
|
Senior
|
|||
|
CPSC 201a
|
CPSC 202a
|
Two electives
|
CPSC 490a
|
|||
|
CPSC 323a
|
||||||
|
CPSC 223b
|
CPSC 365b
|
Two electives
|
One elective
|
|||
|
One elective
|
||||||
and
|
Sophomore
|
Junior
|
Senior
|
||||
|
CPSC 201a
|
CPSC 323a
|
CPSC 490a
|
||||
|
CPSC 202a
|
One elective
|
Two electives
|
||||
|
CPSC 223b
|
CPSC 365b
|
Two electives
|
||||
|
One elective
|
||||||
For typical B.A. programs, two of the electives would be omitted.
Electives. 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 director of undergraduate studies, be counted toward the requirements.
Students considering graduate study in computer science are advised to take CPSC 421a and 422b, as well as courses covering the breadth of computer science, including programming languages and systems, artificial intelligence, scientific computing, and theoretical computer science.
Students interested in using computers to solve scientific and engineering problems are advised to take CPSC 440b 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 202a. 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 222a or b, 225a or b, or 230 and MATH 112a or b, 115a or b, or 120a or b.
Senior requirement. In the senior year students must take CPSC 490a or b, an independent project course in which students select an adviser to guide them in research in a subfield of computer science. With permission of the director of undergraduate studies, students may enroll in 490a or b more than once or before their senior year.
Schedule approval. All Computer Science majors in the sophomore, junior, and senior years should have their programs approved by the director of undergraduate studies.
Combined B.S./M.S. degree program in Computer Science. 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. The requirements are as follows:
1. Candidates must satisfy the Yale College requirements for the B.S. degree in Computer Science.
2. In fulfilling these requirements, students must complete eight graduate courses from the approved list, up to two of which may, with the permission of the director of undergraduate studies 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 690a or b, 691a or b, or 692a or b.
Select Program in Engineering. Qualified students majoring with a B.S. degree in Computer Science may be eligible to apply for a special program that includes industry research experience. See under Engineering.
REQUIREMENTS OF THE MAJOR
Prerequisites: None
Number of courses: B.S.—12 term courses taken for letter grades (incl senior project); B.A.—10 term courses taken for letter grades (incl senior project)
Specific courses required: B.S. and B.A.—CPSC 201a or b; CPSC 202a or MATH 244a; CPSC 223b, 323a, 365b
Distribution of courses: B.S.—6 addtl intermediate or advanced Comp Sci courses; B.A.—four addtl intermediate or advanced Comp Sci courses
Substitution permitted: Advanced courses in other depts, with DUS permission
Senior requirement: Senior project (CPSC 490a or b)
Unless otherwise indicated, courses in Computer Science do not count toward the natural science requirement for the Class of 2008.