~ Waitlists / Enrollment / Registration ~
General Info: Everyone intending to enroll in either COMS 4271 or COMS4771 will be placed on a waitlist. Students will be cleared to enroll from the waitlist based on space/seat availability and their priority (student's seniority, student's track, student's major, etc) by the CS student affairs staff (advising@cs). If your preferred section is full, please put yourself on the waitlist for a different (non-CVN) section that has space still available. All sections are exactly the same.
-- Questions regarding getting onto the waitlist --
- The course shows up as restricted/blocked and I cannot even place myself on the waitlist. What should I do?
Please take a look at the policy to enroll in a CS class stated here: https://www.cs.columbia.edu/cs-course-registration-policy/ (you can email CS student affairs if you have a question).
Registrations for students from non-CS/CE/DSI department will open soon, or definitely by the first week of the semester. You should be able to self register then. If you have any issues, please contact CS student administration.
- Can I bypass placing myself on the waitlist and directly get enrolled?
- You must place yourself on the waitlist. You'd be cleared based on student registration priority. You should reach out to your deparment's student affairs if you need any help placing yourself on the waitlist. You can reach out to CS student affairs if you have any questions about getting off the waitlist.
- I am a student in Columbia’s School of Professional Studies (SPS). What procedure should I follow to register for this course?
- If you are an SPS student you should contact your SPS Dean to check how to register for this course. Only SPS students should contact SPS Dean. They cannot help non-SPS students regarding registration issues. If your SPS dean has no objections for you registering, you can reach out to CS student affairs and they should eventually approve you based on student priority.
- I am a CS/CE/DSI major and I still cannot place myself on the waitlist. What should I do?
Once the registration window opens for you, you should be able to self register. If you have any issues, please contact CS student administration.
If you are a CS/CE major, enroll in COMS4771. If you are a DSI major, enroll in COMS4721.
- Can you sign my Registration Adjustment Form (RAF) to get into the class?
- Under no circumstances RAF will be signed. Please contact your department’s student administrator and CS student advising on how to register for the class.
-- Questions regarding getting cleared from the waitlist --
- I am already on the waitlist, when will I know that I am officially enrolled in the class?
CS student affairs staff (advising@cs) will clear students who are on the course waitlist based on student priority (that is, preference is given to student's seniority, track, major, etc). You can reach out to them if you have any questions.
NOTE: The contents for all sections of COMS4721 and COMS4771 are exactly the same, however 4721 will give enrollment priority of DSI students, while 4771 will give enrollment priority to CS students.
- Enrollment for my section's waitlist is full. What should I do?
-
If your preferred section is full, please put yourself on the waitlist for a different (non-CVN) section that has space still available. (The content for all sections is exactly the same)
In case all sections are full, note that usually there is a significant drop in the enrollment in the first two weeks of classes. So you would likely be cleared by then. Again, please reach out to advising@cs in case you have any questions.
- Can I enroll in CVN section?
-
CVN section is reserved for CVN students only. If you are not a CVN student, please enroll in any regular section even if you will not be able to attend in-person most of the times. Make sure to check the in-person attendance requirements for non-CVN students below.
-- Questions regarding denials --
- I just got denied registration, what is going on?
Registrations are based on student priority (student's seniority, track, major, etc) and are solely determined by CS student affairs. If you are denied registration from the waitlist, that means that it has been determined that you are not a priority student at this time. If you think this is an error, you can reach out to the CS student affairs. See CS course registration policy at: https://www.cs.columbia.edu/cs-course-registration-policy/ (you can email the CS student affairs if you have any questions).
Denial notification is also helpful for you to know that you are currently not a priority student for this course, and thus you can make an informed choice about what to do with your waitlist registration slots at this time. You can either find another course to join, or rejoin this course's waitlist at a later date when all priority students are enrolled (eg during the first week of classes) to be reconsidered for enrollment.
NOTE: Do not email me requesting to reconsider your registration. All approvals are done by the CS student affairs, please email them.
-- Questions regarding dropping the course --
- I accidentally enrolled in the course/am no longer interested in taking this course, how do I drop?
You should be able to drop the course by yourself using SSOL/Vergil. If you have any issues you can reach out to your department's student affairs and they can help you drop the course.
Note that I cannot help you in dropping the course, so please dont contact me regarding this.
~ Auditing the course ~
- I want to audit the course, is there a special procedure I should follow?
-
If you are considering to "officially" audit, that is take the course for a "R" grade which will show on your transcript:
- The only requirement is for you to diligently attend lectures and write a short 1-2 page report at the end of the semester discussing how the material covered in class would be beneficial for your current/future academic/professional career
- Make sure to
- First check with your department's student affairs whether you are allowed and approved to take this class for R credit. (I cannot help you in this process)
-
Once your department advisor has approved you, you must email the course instructor (ie me) confirming that you want to take the course for R credit.
-
An acknowledgment email reply from the course instructor will confirm your R credit status for the course.
- IMPORTANT: Your R credit status is not confirmed until you get can explicit acknowledgment email from the course instructor.
- As an R credit student, you dont need to take any quizzes, homeworks, or exams
- You can reach out the TA if you need access to pre-recorded lectures on Courseworks.
If you want to "unofficially" audit (ie no record appears in your transcript)
- There are no restrictions, feel free to attend the lectures (in-person or online, whatever option is available during the semester)
- There are absolutely no requirements (you dont need to take any quizzes, homeworks, exams)
- You can reach out the TA if you need access to pre-recorded lectures on Courseworks.
~ Pass/Fail Grading Option ~
- Can I take the class as the Pass/Fail (P/D/F) grading option?
-
You can take the class as whatever grading option you prefer. You should be able to change the grading option on SSOL/Vergil by yourself. You can reach out to your department's student affairs in case you need help switching the grading option for the course. Note: it is your responsibility to check how changing the grading option affects your graduation requirements. You should reach out to your academic advisor regarding the implications of changing the grading option and how it affects your graduation requirements.
~ Prerequisites ~
- What are the prerequisites for this course?
-
There are several prerequisites for this class. In order to be successful in this course, you should have good working knowledge of applied probability, statistics, linear algebra, multivariate calculus and basic algorithmic design principles. Along with these math/CS prerequisites, you are expected to be able to program in a high-level scientific programming language of your choice (such as Matlab, Octave, Python, Julia or R).
Here are some of the very basics you should know:
- Applied Probability: Events, discrete and continuous random variables, densities, expectations, joint-, conditional- and marginal distributions, independence, concepts of standard deviation, variance, covariance, and correlation, law of large numbers, central limit theorem.
- Applied Statistics: Bayes Rule, Priors, Posteriors, Maximum Likelihood Principle (MLE), Basic distributions such as Bernoulli, Binomial, Multinomial, Poisson, Gaussian. Multivariate versions of these distributions, especially Multivariate Gaussian Distribution.
- Linear Algebra: Vector spaces, subspaces, matrix inversion, matrix multiplication, linear independence, rank, determinants, orthonormality, basis, solving systems of linear equations. Eigenvectors/values, Eigen- and Singular Value Decomposition. Identifying and working with popular types of matrices - e.g. symmetric matrices, positive (semi-) definite matrices, non-singular matrices, unitary matrices, rotation matrices, etc. Linear maps, fundamental subspaces (column space, row space, null space, left null space), operators, (orthogonal) projections.
- Multivariate Calculus: Limits and sequences of functions. Taylor expansions and approximations.
Take derivatives and integrals of common functions, gradient, Jacobian, Hessian, classification of stationary points, compute maxima and minima of common functions. Differentiation of vector valued functions.
- Mathematical maturity: Ability to communicate technical ideas clearly.
- Basic algorithm design and analysis: Time and space complexity analysis, asymptotic notation (eg, big-O, big-Ω, big-Θ), complexity analysis of iterative and recursive processes.
- Basic datastructures: Graphs, Trees, Lists, Tables. Basic representation, traversal and analysis techniques on such datastructures.
- Programming: Ability to program in a high-level language, and familiarity with basic algorithm design, data structures, coding principles and efficient data processing in your preferred high-level language.
- I have taken class XYZ, does it fulfill as a prerequisite for this course?
- Prerequisites are for general guidance of the topics that you are expected to know before you start this class. Since each student has a different background, no specific prerequisite class will be enforced. You have to judge for yourself if you are prepared to take this course. If you feel comfortable with the material covered in the lectures and homeworks, feel free to continue with the course.
- I don't have one (or more) of the prerequisites for this course, can I still be successful?
-
Students in the past have been successful with this course without having some background knowledge. However, these students put in a lot of work self-learning the associated prereq topics as needed.
- Will you review any of the prerequisites during the first few lectures?
-
We will not review/spend too much time on any of the prerequisite topics. It is strongly suggested to review all the prereq topics prior to the lectures to get the most out of them.
~ Syllabus / Topics Covered in Class / Lectures / Attendance ~
- Where is the course syllabus?
- Here is the link to the course syllabus: https://www.cs.columbia.edu/~verma/classes/ml/index.html.
- Is this course more applied or more theoretical?
- This course is very theoretical. You are expected to be comfortable with the math prereqs and you will not enjoy this course if you don't enjoy working on hard math problems. It covers more foundational topics that form the central pillars of all modern machine learning models.
- There is very little Neural Networks (NN), Deep Learning (DL) covered in this course. Why?
-
This course covers more foundational topics in ML that form the central pillars of all modern machine learning models. There are several COMS courses that cover NN and DL specifically. You are encouraged to explore/take those courses.
- I cannot attend every lecture, will the lectures be recorded that can be accessed?
-
Lectures will be recorded, and will be accessible by all sections via Courseworks throughout the semester for later viewing.
- Is in-person attendance mandatory?
-
In-person attendance for the lectures is not required; recorded videos of the lectures will be posted on Courseworks for later viewing. HOWEVER every enrolled student (except for CVN students) are required to take the exams in person on the scheduled days. Schedule for the exam days will be posted on the course discussion board (Edstem/Piazza) on the first day of lecture.
- I cannot attend the exams in person, can I take them remotely?
-
No, you are required to take the exams in person on the scheduled exam days. Please don't enroll in this class if you cannot attend the exams in person on the designated days. No exceptions will be given.
Only CVN students are approved to take the exams remotely under CVN approved exam proctors. Please reach out to support@cvn for details.
- I am a CVN student, but I want to attend some/all lectures in person. Is that possible?
-
Yes, you are allowed to attend lectures any number of lectures in person.
- I am a CVN student, but I want to take some/all exams in person. Is that possible?
-
Yes, you can take the exam(s) in person. HOWEVER, you must notify the instructor at least two weeks in advance to ensure that proper arrangements and appropriate coordination with CVN staff can be done in a timely manner.
~ Homeworks and Assignment Submission ~
Homeworks will contain a mix of programming and written assignments. The written segment of the homeworks MUST be typesetted as a PDF document, with all mathematical formulas properly formatted. The programming segment can be done in any high-level programming language. You are expected to have good working knowledge of the programming language you choose, and will receive very little 'debugging' help from the staff.
-- Questions relating to homework logistics --
- How do I submit the homework?
- We will use Gradescope (https://gradescope.com/) for submitting and grading the class assignments.
- Where can I get the Gradescope signup code?
- Gradescope signup code is available on the course discussion board (Piazza/Edstem). It will be available after add/drop period to the officially registered students when the course enrollments are completely finalized after the second week of classes.
- Can I submit handwritten homework?
- No. The homeworks must be typesetted legibly as a PDF document, with all mathematical formulas properly formatted. Handwritten homeworks will receive a score of zero.
- What programming language(s) can I use for homeworks?
- You can use any programming language for doing the programming section of the assignment. It is strongly recommended that you use a high-level scientific programming language that gives you the ability to quickly code complex matrix level computations (such as computing a matrix inverse, find the eigenvalues, etc). Popular scientific languages include Matlab, Octave, Python, R and Julia. Students sometimes have used lower level languages like C, C++ or Java in the past.
- How do I submit the programming assignment?
- The detailed instructions will be posted on the course discussion board (Piazza/Edstem). Typically it will be submitted as a separate assignment on Gradescope. Note that answers related to programming questions (such as relevant plots and data analysis) must be included in the homework pdf document you submit on Gradescope.
- What is the policy on late homeworks submissions?
- No late homeworks will be accepted unless you have an explicit permission from the instructor for a valid reason.
-- Questions relating to homeworks --
- I need a clarification on a specific homework question, what do I do?
- You should use the course discussion board (Piazza/Edstem) to ask your question so that everyone in class can benefit from the answer. If your question is specific to your case or you only want the course staff to see your question, you can post it as a private question on the discussion board. Due to overwhelming amount of emails received by the course staff, individual emails asking clarification on homework problems will not be answered.
~ Degree/Graduation requirements ~
- I am in XYZ track/major/department/degree program. Does this class satisfy my graduation requirements?
- You should reach out to your department's student affairs and/or your academic advisor to check if this class satisfies your graduation requirements.
Please don't email me regarding this since I will not be able to comment or help in such matters.
- My track/major/department/degree program requires XYZ machine learning class to satisfy the graduation requirements. Is it possible to substitute/count this class instead?
- You should reach out to your department's student affairs and/or your academic advisor to check if this class can be used as a substitute.
Please don't email me regarding this since I will not be able to comment or help in such matters.
- My track/major/department/degree program requires me to take this class in a specific semester to count towards graduation. Can I take this class a different semester (earlier/later than the required semester) instead?
- You should reach out to your department's student affairs and/or your academic advisor to check if you can take this class in a different semester.
Please don't email me regarding this since I will not be able to help in such matters. In general, I have absolutely no objections. You can take the class earlier or later. It is your responsibility how this may affect your graduation.
~ Misc. ~
- I have a question that is not answered in this FAQ, what should I do?
- Please post your question on the course discussion board (Piazza/Edstem) to ask your question, and it will be answered promptly. Direct emails to the course staff/instructor will not be answered.
- My emails to course staff/instructors are not being answered. What is going on?
- See the previous question.
- How do I access the course discussion board (Edstem/Piazza)?
- You can access the course discussion board from Courseworks once you are officially enrolled in the course (usually by the start of the semester). See "Piazza" or "Ed Discussion" on the course navigation bar in Courseworks.
- I just signed up and placed myself on the waitlist on SSOL/Vergil. Why cant I access Courseworks/Course discussion board?
- You need to be officially enrolled in the course to access the course discussion board.
- Are there other introductory ML courses that I may be interested in?
-
Here is a list of other intro ML courses that may be of interest to students. The following is an incomplete list of courses that are available from different departments at Columbia. (I don't know which of these courses are offered this semester/next semester/summer/etc.)
-
COMS "Elements of Data Science" 4995
-
COMS "Applied ML" 4995
-
COMS "Empirical Methods in Data Science" 4995
-
EE "Machine Learning" (EE 4903)
-
ELEN "Machine Learning for Signals, Information and Data" (ELEN 4720)
-
IEOR "Foundations of Data Science" 4500.
-
IEOR "Data Analytics" 4523.
-
IEOR "Data Analytics for OR" 4212
-
IEOR "Data Mining" 4540
-
STATS "Statistical Machine Learning" 4241
-
STATS "Applied Data Mining" 3106
-
STATS "Intro Data Science" 4206
-
STATS "Applied Data Science" 4243
-
STATS "Advanced Data Analysis" 4291
-
MECE "Data Science for Mechanical Engg" 4520
* IMPORTANT *
If you are taking COMS4721/4771 to satisfy any part of your degree requirement (e.g. to count towards Intelligent Systems track, etc.) then almost certainly it cannot be substituted with any of the above courses.
Since some of the courses listed above cover essentially the same material (albeit at a different depth) as COMS4721/4771, "double counting" is usually not allowed. That is, you cannot count both COMS4721/4771 and another course listed above (for some courses, not all) towards your degree requirements.
If you are unclear about your degree program requirements/restrictions please check with your academic advisor and don't email me (I will not be able to comment or help in such matters).