Computer Science courses
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, Drew McDermott, Vladimir Rokhlin, Holly Rushmeier (Chair), Martin Schultz (Emeritus), Zhong Shao, Avi Silberschatz, Daniel Spielman, Steven Zucker
Associate Professors Brian Scassellati, Yang Richard Yang
Assistant Professors Daniel Abadi, Bryan Ford
Lecturer Brad Rosen
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 201, 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. Together these courses include the material that every major should know.
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 201, none assumes previous knowledge of computers.
- CPSC 079b examines the methods used to define shapes, materials, and lighting in computer-generated images. Students use a modeling/rendering system to create an animated video with rich visual effects. Proficiency in high school–level mathematics is assumed.
- CPSC 112a or b teaches students majoring in any subject area how to program a computer and solve problems using the language Java. Students with previous programming experience should consider taking CPSC 201 instead.
- CPSC 150a explores how some of the key ideas in computer science have affected philosophy of mind, cognitivism, connectionism, and related areas. This humanities-style course has significant readings and a paper, and satisfies the writing and the humanities and arts distributional requirements.
- CPSC 151b studies the history of the graphical user interface in an attempt to guess its future. This course also satisfies the writing distributional requirement.
- CPSC 183a 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 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 201 without taking CPSC 112. (These courses meet at the same time so that students are easily able to change levels if necessary.)
- 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 201; CPSC 202a or MATH 244a; CPSC 223b, 323a, 365b, and 490. 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 480 and 490 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 201 and 223 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 421 and 422, 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 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 and MATH 120.
Senior requirement In the senior year students must take CPSC 490, 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 490 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:
- Candidates must satisfy the Yale College requirements for the B.S. degree in Computer Science.
- 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 690, 691, or 692.
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 201; CPSC 202 or MATH 244; CPSC 223, 323, 365
Distribution of courses B.S.—6 addtl intermediate or advanced Comp Sci courses; B.A.—4 addtl intermediate or advanced Comp Sci courses
Substitution permitted Advanced courses in other depts, with DUS permission
Senior requirement Senior project (CPSC 490)