The Computer Science department offers two degree programs, B.S. and B.A., and combined majors with Electrical Engineering, Mathematics, and Psychology. Each program provides a solid technical education yet allows students to take the broad range of courses in other disciplines that is an essential part of a liberal education.
The programs share a common core of five computer science courses, including CPSC 201, Introduction to Computer Science, and courses in discrete mathematics, data structures, systems programming and computer architecture, and algorithm analysis and design. This core is supplemented by electives and, for the combined majors, core courses in the other discipline. The capstone of the major is the senior project, in which students conduct original research under the guidance of a faculty mentor.
Prospective majors are encouraged to discuss their program with the director of undergraduate studies (DUS) as early as possible.
The department offers a broad range of introductory courses for freshmen with varying backgrounds and interests. Except for CPSC 200, Introduction to Information Systems, and CPSC 201, Introduction to Computer Science, none assumes previous knowledge of computers.
- CPSC 100, Introduction to Computing and Programming, taught jointly with Harvard University, teaches students majoring in any subject area how to program a computer and solve problems. No prior experience is required.
- CPSC 112, Introduction to Programming, 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 134, Programming Musical Applications, provides an introduction to computer music, including musical representations for computing, automated music analysis and composition, interactive systems, and virtual instrument design.
- CPSC 150, Computer Science and the Modern Intellectual Agenda, 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 requirement.
- CPSC 151, The Graphical User Interface, 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, Law, Technology, and Culture, explores the myriad of ways that law and technology intersect, with a special focus on the role of cyberspace. This course satisfies the social science distributional requirement.
- CPSC 200, Introduction to Information Systems, intended as a survey course for non-majors, focuses on practical applications of computing technology while examining topics including computer hardware, computer software, and related issues such as security and software engineering.
- CPSC 201, Introduction to Computer Science, 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 202, Mathematical Tools for Computer Science, presents the formal methods of reasoning and the concepts of discrete mathematics and linear algebra used in computer science and related disciplines.