FAQ for Currently Enrolled Undergraduates



I am interested in becoming a CS major but I am not yet declared. Can I still receive information about the major and the department, including job opportunities and events?

Yes, please email advising@cs.columbia.edu indicating your interest in joining the CS mailing list. Please include your name, UNI, and school.

When can I declare CS as my major? Are there any minimum requirements that I need to meet before declaring the major?

The major declaration period occurs during your sophomore year: in the fall semester for SEAS students and the spring semester for Columbia College, GS, and Barnard students. There are no minimum requirements that you need to meet before declaring the major or minor, though we do recommend that you start taking the introductory CS courses (ENGI E1006, COMS W1004) during your freshman year.

How do I declare CS as my major?

Each school has a different process for this. SEAS and CC students should discuss with their CSA advising dean. GS and Barnard students should speak with their respective school advisors.

I’m a Barnard student and I need a signature on my major declaration form. Who can sign for me?

Any of the Barnard faculty advisors can sign as the Department Chair.  See here for the advisor list.

Who is my CS advisor?

All CS majors and concentrators are assigned a faculty advisor. You can find yours by clicking here. The administrative advisors for the CS undergraduate program are Clarissa Peña and Randolph Rivo. Clarissa advises SEAS students in the B.S. program and Rivo advises Columbia College, General Studies, and Barnard students in the B.A. program. You can reach them at advising@cs.columbia.edu.


Am I required to declare a track?

Yes! All CS majors are required to declare a track and specialize in one of five major areas of Computer Science: Foundations, Software Systems, Digital Systems, Intelligent Systems, Applications and Vision, Interaction, Graphics and Robotics.

How do I declare my track?

Please declare your track in MICE. You can click on the blue pencil icon next to Program in your MICE profile and select a track from the dropdown menu. Please do this as soon as possible so your advisors know which program requirements you are following.

Can I change tracks?

Yes. However, if you are changing tracks in your junior or senior year, you should meet with your administrative advisor to do a degree progress check to ensure that you can still complete your program in time for graduation.

What is the advanced track? Can I sign up for this?

Entry into an advanced track is by faculty invitation only, and it is only extended to students
who have already completed the core courses and the required courses for one of the five tracks. This is extremely rare.


Can I waive out of a required CS course?

If you already know the material in one of the required courses, either through taking another course elsewhere or through work/project experience, it may be possible to waive out of that course. Please get in touch with your faculty advisor to discuss this. Your advisor will determine whether your prior knowledge is sufficient to satisfy that course requirement. If your waiver request is approved, please forward the approval email to advising@cs.columbia.edu so we can maintain a record of the waiver. Please note that there is no actual point value to a course waiver. When you waive out of a course, you will still need to take a replacement course to meet the minimum credit requirement for the major.

I have taken some CS courses at another school or plan to do so during my summer break. Can I transfer those credits in to Columbia and count them toward my CS major?

First, contact your school’s advising dean in order to get the actual credit/point value of the course transferred to Columbia. To then count the course & points toward your CS major requirements, you will need to reach out to the instructor of the equivalent course at Columbia to convince them that the course you took elsewhere is in fact equivalent. If they approve, forward that approval to advising@cs.columbia.edu so we have a record. Barnard students should forward to their advisor to have their degree audit updated.

Can I take electives that aren’t on the approved list of track electives? How about classes outside of the CS department?

Yes, but any course outside of the pre-approved list will need to be reviewed and approved by your CS faculty advisor first. Please be sure to send all substitution approvals to advising@cs.columbia.edu so we can maintain a record. Note: all track courses must be 3000-level or higher.


Which CS courses will be offered each semester?

We can’t guarantee more than 3 months in advance that a certain course will be offered during a specific semester, since course scheduling often depends on instructor availability. However, we try to keep our schedules as consistent as possible. You can look back at course listings from previous years to get a sense of what we offer each fall and spring.

How can I create a program plan for my major requirements?

We have degree progress checklists on our general undergraduate info page. We recommend that you use these checklists to plan out your program and figure out which courses you still need to take to complete your major requirements. Please feel free to send your checklist to advising@cs.columbia.edu so a Student Services advisor can review and confirm your plan. Please keep in mind that CS courses are in very high demand, so you may not be able to get in to your top choices each semester. Your program plan should be flexible and include alternate options.

Which courses can I count as General Technical Electives? (For SEAS students only). 

Generally, all SEAS courses will count as GTEs, with the exception of Lean Launchpad. Most STEM courses will count. Social science courses (e.g. psychology) and economics courses will not count as GTEs. The only exceptions are Econometrics and Game Theory in the Economics department and Formal Logic in the Philosophy department. All GTEs must be 3000-level or higher. You must get all GTEs pre-approved by your CS faculty advisor.

Can I take a course through CVN or one of the CS department’s flipped/hybrid course offerings?

CVN courses are not available to undergraduate students. SEAS undergraduates are permitted to count up to 1 flipped/hybrid course (any course with a section H01) per semester toward their degree. Students in CC, GS, or Barnard cannot count flipped/hybrid courses toward their degrees.

My DAR is incorrectly listing the courses I am using toward my major requirements and/or saying I’m missing a requirement that I have definitely satisfied. What can I do?

Ignore the DAR. It is often incorrect for CS majors. Please confirm your program requirements with your faculty advisor or CS Student Services. We use our own departmental degree progress checklist, not the DAR, to clear you for graduation.

I got a ‘D’ in a required course. Do I need to retake it?

We will grant a one-time-only exception to count one D toward your major requirements. If this is your second D, you will need to retake the course.

Can I take a course P/F and count it toward my major requirements?


Is studying abroad a good option for CS majors?

Studying abroad is possible for CS majors but requires careful planning. It is often difficult to fulfill major requirements at many universities abroad, so particular care must be taken when choosing where to go. You will need to confirm with your CS faculty advisor that the courses you take while abroad will count towards your CS major at Columbia. Most students who study abroad feel that the rewards outweigh the logistical difficulties involved. If you are interested in studying abroad, it is best to start planning with your school advising dean by the end of your first year.

Should I take COMS W3157 and CSEE W3827 at the same time?

This seems to be a matter of taste.  Some students suggest the courses complement one another and are interesting to take together.  Others prefer to take AP first to be better prepared for the assembly language programming in the second half of Fundamentals.

Can I double count course X for CS and my other major/minor/concentration?

If you are a SEAS student, you can double count a major course toward your minor. If you are in CC, GS, or Barnard, you cannot. These are rules set by the individual schools, not the CS department.

What’s the difference between Data Structures and Honors Data Structures?

Honors Data Structures is worth 4 points and has a mandatory recitation session in addition to lectures. The honors course typically covers a few additional topics, such as data structures and algorithms in functional programming languages (we have used Scala in the past).

How do I get involved in research?

The CS department holds a Research Project Fair during the first week of each fall and spring semester. You can attend this fair to explore available research opportunities in the department each semester. You can also reach out directly to faculty members with whom you are interested in working to inquire about research opportunities that they may have available in their lab.

What do I do if I want to do a research project for credit or write a senior thesis?

First, you need to find a CS faculty member to serve as your research advisor. Then reach out to advising@cs.columbia.edu and we can give you the call numbers for the project or thesis courses. You can count a maximum of 6 points of research/project credit toward your major. 

Do I have to / can I take 1006? Can I skip 1006 if I know Python already?

In general, only SEAS students must take 1006. The course is open to non-SEAS students. We occasionally allow SEAS students who can demonstrate that they are familiar with the course content to waive the course. However, they need to make up the 3 credit points by taking an extra 3000 or 4000 level CS course.

Can I take Data Structures and Discrete Math at the same time?


I already know Java, can I go straight into 3134?

Maybe! But discuss this with Prof. Paul Blaer first.

Can I take COMS W3134 and COMS W3157 at the same time?

It is recommended that you take Data Structures before taking Advanced Programming.

How can I find a tutor for a CS course?

Email advising@cs.columbia.edu and we’ll provide you a list of available tutors.


How do I find out about CS jobs and internships?

Check your e-mail! We send daily job listings to the CS student listserv from our Careers@CS e-mail alias. You can also find lots of job listings on LionShare.   The CS department and the Center for Career Education also host many employer recruiting events throughout the academic year. You can check the CS@CU Calendar or CCE calendar for upcoming event listings.

What resources does the CS department provide to help students with their professional development?

Read all about it here!