Chair: Shree K. Nayar
450 Computer Science, 212-939-7004
Vice Chair: Vishal Misra
512 Computer Science, 212-939-7061
Associate Chair for Undergraduate Education: Adam Cannon
459 Computer Science, 212-939-7016
Professors: Alfred V. Aho, Peter K. Allen, Peter Belhumeur, Steven M. Bellovin, Steven K. Feiner, Jonathan L. Gross, Julia Hirschberg, Gail E. Kaiser, John R. Kender, Kathleen R. McKeown, Shree K. Nayar, Kenneth A. Ross, Henning G. Schulzrinne, Salvatore J. Stolfo, Joseph F. Traub, Henryk Wozniakowski, Mihalis Yannakakis, Yechiam Yemini
Associate Professors: Luca Carloni, Stephen A. Edwards, Luis Gravano, Tony Jebara, Angelos D. Keromytis, Vishal Misra, Jason Nieh, Steven M. Nowick, Ravi Ramamoorthi, Daniel Rubenstein, Rocco Servedio
Assistant Professors: Eitan Grinspun, Martha Kim, Tal Malkin, Itsik Pe’er, Simha Sethumadhavan, Junfeng Yang
Lectures: Adam Cannon
Adjunct Faculty: Alexandros Biliris, German Creamer, Donald Ferguson, Claire Monteleoni, Pamana Isukapalli, Alexander Pasik, Michael Schneider, Herbert Thompson, John Ioannidis, Dragomir Radev, Gitanjali Swamy, Mayank Sharma
Barnard Major Advisors: Julia Hirschberg and Kathleen R. McKeown
Computer Science is the study of how to communicate and transform information. Developments in the field over the past few decades have profoundly changed society, and this effect is likely to accelerate in the future. Information processing techniques are being applied increasingly in the fields of medicine, business, law, science, and finance. The goal of the theoretical side of computer science is to characterize the inherent complexity of computations, including the issue of what problems are solvable. The goal of the applied side of the field is to design cost-effective computer systems that are easy and pleasant to use, including the possibility of "intelligent" systems that mimic some aspects of human behavior.
The bachelor of arts degree in Computer Science encourages students to obtain broad exposure to the arts, humanities, and social sciences while at the same time providing them with the appropriate Computer Science background necessary for graduate study or a professional career. Computers have an impact on nearly all areas of human endeavor, so the department also offers several courses intended for students who do not plan a Computer Science major or concentration.
PROGRAM OVERVIEW
The Computer Science major offers maximum flexibility by providing students with a range of options for specializing their degree program. Students study a common core of fundamental topics, supplemented by a track that identifies specific areas for deeper study.
The foundations track prepares students for advanced work in fundamental theoretical and mathematical aspects of computing, including analysis of algorithms, scientific computing, and security. The systems track prepares students for immediate employment in the computer industry as well as advanced study in such areas as software engineering, operating systems, computer-aided digital design, computer architecture, programming languages, and user interfaces. The artificial intelligence track provides specialization for the student interested in natural language processing and systems capable of exhibiting "human-like" intelligence. The applications track is for students interested in the implementation of interactive multimedia content for the Internet and wireless applications. The vision of graphics track exposes students to computer vision, graphics, human-computer interaction and robotics. A combination track is available to students who wish to pursue an interdisciplinary course of study combining computer science and another field in arts, humanities, mathematics, natural sciences, or social sciences. A student planning a combination track should be aware that one additional course is required to complete this option.
All majors should confer with the program consultant each term in planning their programs of study. Students considering a major in computer science are encouraged to talk to a program consultant during their first or second year. The requirements that follow are special to this department and must be read in conjunction with the general requirements for the bachelor's degree. As a rule, no more than 12 transfer credits will be accepted toward the degree.
Program of study:
This allows the most freedom possible in selecting a specialized track and completing the requirements during the junior and senior years. It is particularly important to complete the core requirements and to seek advice from a track consultant to better plan your course of study as early as possible. W1004, W1007, and W3137 are taught in Java. Advanced Programming (W 3157) is taught in C/C++, so students will become multilingual. Programming classes make use of an extensive array of computing facilities available on campus.
Required courses: 41 or 44 points.
Computer Science Core (23 points): COMS W 1004, W 1007, W 3203, W 3137, W 3157, W 3261, W 3827. Students who have taken AP Computer Science in high school and received a grade of 4 or 5 can waive W 1004.
Mathematics (3 points): one semester of calculus.
Track requirement (15 or 18 points): each student must also fulfill the track requirement by selecting one of six upper-level tracks. Each track, except the combined track, requires five courses of which 2 or 3 are required, 1 is an elective breadth course, and 1 or 2 are elective track courses. The combined track requires a cohesive selection of six advanced courses: three 3000- or 4000-level Computer Science courses and three 3000- or 4000-level courses from another field. The elective breadth course in each track can be any 3-point COMS 3000-level or higher course that is not a Computer Science Core course or a technical elective in that track.
Foundations track (15 points): for students interested in algorithms, computational complexity, scientific computing, and security. The required track courses are Computer Science (COMS) W 4231, W 4236, W 4241. The elective track courses include COMS W 4203, W 4205, W 4252, W 4261, W 4281, W 4444, W 4771, W 4772, W 4995.
Systems track (12 points): for students interested in networking, programming languages, operating systems, and software systems. The required track courses are COMS W 4115, W 4118, W 4119. The elective track courses include any COMS W 41xx course, any W48xx course, W 4444, W 3902, W 3998, W 4901, W 4995, W 4996.
Artificial intelligence track (12 points): for students interested in machine learning, robots, and systems capable of exhibiting "human-like" intelligence. The required track course is COMS W 4701, plus any two of W 4705, W 4731, W 4733, W 4771. The elective track courses include COMS W 3902, W 3998, W 40xx, W 4165, W 4252, W 47xx, W 4901, W 4995, W 4996.
Applications track (12 points): for students interested in interactive multimedia applications for the Internet and wireless networks. The required track courses are COMS W 4115, W4170, W4701. The elective track courses include COMS W 3902, W 3998, W 41xx, W 47xx, W4901, W 4995, W 4996.
Vision and graphics track (12 points): for students interested in computer vision, graphics, and advanced forms of human-computer interaction. The required track courses are COMS W 4160 and W 4731. The elective track courses include COMS W 3902, W 3998, W 4162, W 4165, W4167, W 4170, W 4172, W 4701, W 4733, W 4735, W 4771, W 4901, W 4995, W 4996.
Combination track (15 points): for students who wish to combine Computer Science with another discipline. A coherent selection of six courses is required: three 3000- or 4000-level Computer Science courses and three 3000- or 4000-level courses from another discipline. This track should be selected by the end of the first semester of the junior year and the courses should be planned with your advisor. The other discipline can be any one in the arts, humanities, mathematics, natural sciences, or social sciences.
Required computer science courses - 23 points: COMS W 1004, W 1007, W 3203, W 3137, W 3157, W 3261, and W 3827 or any 4000-level computer science course.