Publication: Sophomore Academic Handbook (Class of 2008)
Department of Computer Science
Why study computer science? People sometimes confuse computer science with computer programming. Computer science majors soon realize, however, that computer science is much more about ideas than about programming (though programming is still a lot of fun for most of us). The invention of computers raises questions that were never even asked in the pre-digital age: What is information? How can we process, store, and transmit it efficiently? What are the possibilities and limitations of computation? How do we tell machines what to do? How can we make them easy and safe to use?
The computer science major can be shaped in many ways, making it an interesting alternative to traditional majors such as physics, mathematics, or one of the engineering disciplines. Some of our majors want to create programs and systems that change the world around them (many end up in Silicon Valley). Others apply computing to some other area they are interested in, such as genomics or music or art or robotics or economics or psychology. Yet others are attracted to the theory of computation and the exciting new fields of mathematics it has opened up.
The Department of Computer Science is a good place to explore these possibilities. The department has expanded significantly in the past decade. It has many interactions with other departments and disciplines and encourages its majors to explore those interactions. Computer science is unique among Princeton departments in offering a major for both A.B.’s and B.S.E.’s. The curriculum thus meets the needs of a broad range of students, from those who want to study the field within the context of a liberal arts curriculum to those who want a full technical curriculum with a firm basis in science and mathematics.
The curriculum has three major components: theory, systems, and applications. Within each, there is a variety of undergraduate courses, and students are encouraged to take graduate courses as well. Courses include algorithms and data structures, compilers, operating systems, networking, architecture, graphics, vision, artificial intelligence, cryptography, and security. Cognate courses in other departments can also be taken for departmental credit.
Faculty, graduate students, and undergraduates work together on research and teaching. Independent work is an important part of the undergraduate curriculum in the department. It provides an excellent opportunity for students to obtain practical experience in research and development in a particular area, working closely with individual faculty members. Topics are often of significant current technical and social interest, like electronic voting, security, and digital rights management. We also have summer programs that encourage our students to create material for our introductory courses.
Computer science graduates have a wide variety of career opportunities. Many of our students go on to graduate school, most often in computer science, of course, but also in law, medicine, and business. Some continue with software development; others go into consulting or management. And every year a handful start their own companies.
Computer science as an undergraduate major is good preparation for careers in other fields. Professionals who understand computing are far more effective in their work. Computer science majors develop problem-solving skills, they are exposed to a variety of software and hardware systems, and they learn the important insights of the discipline. This preparation is valuable for a broad range of careers because of the central role played by the computer in society.