FAQ for Currently Enrolled Undergraduates

Blue CS@CU Logo for undergraduates

FAQs for Current Undergrads

Have a question or concern about your program? You’re in the right place! If you can’t find the answer you are looking for here, or on our Undergraduate Homepage, email CS Advising.


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.

Each school has a different process for this. SEAS and CC students should discuss with their CSA Advising Dean. GS students should speak with their school advisors. Barnard students should use Slate.

All CS majors and concentrators are assigned a CS Faculty Advisor. You can find yours by clicking here. If you have general or administrative questions, please email CS Advising at ug-advising@cs.columbia.edu.


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.

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.

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

Entry into an Advanced Track is by CS 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.

This track is for students who wish to combine computer science with another discipline in the arts, humanities, social or natural sciences. A coherent selection of six upper-level courses is required: three from computer science and three from another discipline.

The courses should be planned with and approved by the student’s CS Faculty Advisor by September 30th of the junior year. The six courses are typically 4000-level elective courses that would count towards the individual majors. Moreover, the six courses should have a common theme. The combination track is not available to those students who pursue double majors. Please complete the Combo Track Proposal form with your CS Faculty Advisor.


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 CS 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 ug-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.

First, contact your school’s Advising Dean in order to get the actual credit/point value of the course transferred to Columbia. In order to count a non-Columbia course toward your CS major / minor / concentration, we require a minimum grade of B or higher. (An exception to this policy is made for students enrolled in an approved study abroad program. Students in an approved study abroad program will receive transfer credit if they earn a grade of C or higher.) To then count the course & points toward your CS major requirements, you will need to import the course on Mice and attach your syllabus and transcript. The corresponding Columbia CS faculty member will review the course you took and the CU equivalent to determine if the import can be approved.

If you have obtained approval for a course import over email, you must forward that approval to CS Advising so we have a record. Barnard students should forward any emailed approvals to their advisor to ensure their degree audit is updated.

Please note that unless you have gotten approval from your Advising Dean, 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.

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 CS Advising so we can maintain a record.

Please note: all track courses must be 3000-level or higher.

No substitutions are allowed for the CS minor. See: http://bulletin.engineering.columbia.edu/undergraduate-minors
More specifically:

No substitutions or changes of any kind from the approved minors are permitted (see lists below). No appeal for changes will be granted. Please note that the same courses may not be used to satisfy the requirements of more than one minor. No courses taken for pass/fail may be counted for a minor. Minimum GPA for the minor is 2.0. Departments outside the Engineering School have no responsibility for non-Engineering minors offered by Engineering.


Students following the old and the new curriculum may choose to take Linear Algebra (MATH 2010, APMA 3101, or APMA 2101) or Computational Linear Algebra (COMS 3251) to satisfy this requirement.

No. You must either take “Data Structures in Java” (COMS 3134) or “Honors Data Structures and Algorithms” (COMS 3137) for fulfilling the Data Structures requirement.

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. 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. Please check the CU Directory of Classes for the most updated course offerings. 

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. Feel free to send your checklist to CS Advising to request a course plan review. 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.

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.

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.

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

If you are in SEAS, GS, or CC, 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.  Barnard does not allow for a D to be counted for any major or minor, including Computer Science.

Studying abroad is possible for CS majors but requires careful planning. It is often difficult to fulfill major requirements at many universities abroad, so 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 Advising Dean by the end of your first year.

This seems to be a matter of personal preference.  Some students suggest the courses complement one another and are interesting to take together. Others prefer to take COMS W3157 first to be better prepared for the assembly language programming in the second half of CSEE W3827.

If you are a SEAS student, you can double-count a major course toward your minor. If you are a Barnard student, double-counting is not allowed because Barnard does not allow double-counting. If you are a CC or GS student, you may double-count the following CS requirements with another major, minor, or concentration:

  • Any Calculus courses (including Honors Math A and B)
  • COMS W1004 Introduction to CS and Programming in Java
  • Linear Algebra (COMS 3251, MATH 2010)

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.

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. Current Research Opportunities are posted online, these can be for credit, pay, or both. 

First, you need to find a CS faculty member who will agree to serve as your research advisor. Then reach out to CS Advising, and we can give you the call numbers for the project or thesis courses (e.g. COMS W3902, COMS W3998, COMS W4901, COMS E6901). You can count a maximum of 6 points of research/project credit toward your major. 

In general, only SEAS students must take 1006. SEAS students who can demonstrate that they are familiar with the course content can request to waive the course. However, they need to make up the 3 credit points by taking an extra 3000 or 4000 level CS course. Course waivers for COMS 1006 are on an exceptional basis, and are not guaranteed.

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

Email CS Advising and we can provide you with a list of available tutors. You may also ask your instructor/ TA for advice on tutors.

You will have the option to test out of the course. Tests are offered at the beginning of every semester. Please discuss this with Professor Ansaf Salleb-Aouissi.


Updated 06/29/2023