Salvatore J Stolfo (10 reviews)
Christos Papadimitriou (10 reviews)
Angelos Keromytis (10 reviews)
Abishek Sainath Madduri (1 review)
Alexandros Biliris (13 reviews)
Augustin Chaintreau (6 reviews)
Henning Schulzrinne (12 reviews)
Mihalis Yannakakis (14 reviews)
Mitchell Laurent Flax (1 review)
Ramachandran Shankar (1 review)
Simha Sethumadhavan (8 reviews)
Anargyros Papageorgiou (12 reviews)
Daniel Rubenstein (28 reviews)
Ansaf Salleb-Aouissi (22 reviews)
May 2021 |
Many of the reviews so far are unfair and lack perspective. If you're into thinking, actually understanding why, and experiencing what it is like to work as a software engineer, Professor Ferguson's class is the one to take. Yes, the instructions are vague. Do you think your manager at work will give you a step-by-step outline of what to do? If you're at an elite organization that solves tough problems in the world (honestly doesn't that sound nicer than being a coding monkey???) then your manager will say, here is the exciting problem - solve it. Your will need to then reach out to people at your organization, do research online, use your brain. Yes, if you're new at a project and your boss is good, you can reach out to your boss AFTER you exhausted the other avenues. Otherwise, why does your boss need you over someone else if they always need to hand-hold you ever step of the way? Professor Ferguson stands in the middle where he provides helper code, provides recorded "how-to" examples to get you started, and is always there to help, whenever you ask. I've actually never seen a professor make himself so available to his students. Your manager probably won't even give you as much time! If you're working on something important and novel after school, often there is no one "right" answer. Prof. Ferguson involves some such questions on his homework. Yet, instead of being excited, I saw many students get flustered and not know what to do when they are asked to think for themselves. For example, he asked students to create an ER diagram on some data. Students asked him questions such as "is there a one-to-many relationship for x and y data?" That is a coding monkey question! Ferguson pushes students to up-level their thinking to that of a best-in-class engineer. For example, the best engineers out there say, "based on what we are trying to achieve and what data we have, here is my recommendation on how we organize it." There are many other points on why Prof. Ferguson is one of the top professors I've ever taken, but I'll leave you with one more. Many professors tell you to memorize some rule, you memorize it, you answer on the test, and then you forget. Professor Ferguson asks you questions where you end up understanding the why and internalize the why. For example, everyone who has taken a databases class knows the different types of data storage, such as a star schema. However, do you actually know how to take some data that is not pristine, wrangle it into a star schema, and then query it? In what cases would you use a star schema over another layout? What data should actually be on what table? How do you take the data from Third Normal Form to a Star Schema? I bet if you didn't take Ferguson's class then you will need your hand held when you start working as you wouldn't actually know the answers.
May 2021 |
I took this course with Prof Dear but this review is more about the course than the professor. COMS 4701 is very much "plug-and-chug" and leaves very little room for self-discovery. If this does not match your learning style, you will probably feel like you're wasting your time. Because there is so much hand-holding involved, it's easy to score well without doing all that much work. That said, I think this course is a great introductory course for non-majors or people just starting CS. Material--very broad overview of AI and high-level discussions of concepts. To get a sense of what the book is like, you can just check out the Wikipedia page on "Artificial Intelligence" or any of the topics on the syllabus. You will not find much more depth in 4701. Quizzes--the quizzes are mostly multiple choice and it's all open book. Extra study time generally is not rewarded as there's not that much depth involved. Also, expect some wrong multiple choice answers to be adversarial in nature so be prepared to second guess your response all the time. Homework--About 75-80% of the code is written all ready, and the remaining code is not difficult to implement. Most of it was translating pseudocode into python. The short answer responses were also not terribly interesting. "Is this implementation more efficient than the other", "Is this guaranteed to find a solution", etc. Grading--There is a curve, but it's probably not necessary since everyone is scoring in the 80s and 90s. The grading rubric is well defined and expectations for each assignment/quiz are clear. I would recommend this course to people without a background in CS or math. The professor is very knowledgeable and the TA's are helpful. Or, if you want an easy A, go for it.
May 2021 |
I found this class incredibly elitist. Professor Cannon constantly made jokes/comments about how special/smarter-than-everyone-else Columbia students are. He also dropped his air of kindness and approachability to snap at students in lectures who asked something he didn't like. I'm guessing from the positive reviews that many students enjoy getting their egos stroked for attending a top school, but it just screams of insecurity. He even compared Columbia to San Jose State once just to flex how much "smarter" his students are... I have no idea why he felt the need to make fun of an institution with far fewer resources that makes higher education more successful. He's nice enough but seems caught up in prestige and unable to see the enormous privilege he himself holds. In addition, the class was average at best at introducing java. Cannon assigned large portions of a textbook to explain many topics that could be distilled much more efficiently through slides/lectures. This class was a review for me, but I could see how difficult it must have been for someone new to the material to try to sort through the readings to find the important information. Overall, this class is straight forward and some of the TA's are incredible. It's not the worst thing you could take, but there is so much room for improvement.
May 2021 |
Do not take this class with Celeste. The lectures were incredibly boring and at times she would look at the slide and go "I don't know what this slide is about" and move on to the next. She also presented herself as flexible and easygoing but was not in my experience. The class lectures did not relate to the homework and I think a lot of people in the class had previous javascript experience, but those of us who didn't basically had to teach it to ourselves with webpages she would link. Overall really boring lectures and tedious homework that didn't relate to the lectures. Participation is graded but all you have to do is answer questions in the zoom chat and you can just wait a second and then copy what everyone else said (that strategy probably won't work in person though)
May 2021 |
The course is insightful and covers good ground in terms of operating systems and how they work - This course is great for any CS student who isn't sure of what the OS does and how. The course gets into the weeds of the Linux kernel which depending on your point of view can be good or something that will haunt you for the rest of your days. There are very good reasons why you should take this course but be sure of your reasons and make sure you have the time to dedicate to this course because it is time-consuming and mentally draining in some ways. The rest of this review can kind of be summarized in -"Workload is hell be ready for the pain going in" PSA: If you're a masters student who already understands OS well enough and isn't from the software systems track and doesn't really need to enhance their C/linux kernel programming - DO NOT TAKE THIS COURSE (unless you like to suffer in which case nothing better really) Hours upon hours are spent staring at the Linux kernel and going one level deeper till you've opened up 70 tabs and you've forgotten where you've come from who you are and why you even exist. The first homework has really strict grading but is otherwise easy, aside from that though the rest of the Homeworks are a pain although they do broaden your horizons I would have been happier to not deal with them Office Hours are a must if you hope to survive and are not already a kernel GOD and luckily we had a good bunch of TAs who understood the material and were mostly willing to point you in something of a direction(god help your souls if you gets a bad bunch of TAs which is unlikely). If you get a bad team you will get torched and the 40+ hours that it usually takes per homework could easily turn into double that (I lucked into a good team but I saw the fate of others) The finals and midterms due to the COVID semester were open book/note and coding based and quite related to the homework and not so much linked to the theoretical lecture content. I think it will go back to whatever it was earlier after COVID