Computer Science

ADDITIONAL INFORMATION

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.)
  7. 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:

  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 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)