professor
Martha Kim

Apr 2021

Typical Columbia CS professor that puts more effort into making their class difficult and catching cheaters than they do with actually teaching. Avoid if you can.

Feb 2021

The prof wasn't exactly a bad professor really. When she was explaining the concepts in class I understood WHAT SHE WAS SAYING pretty easily. However, like the other comments, I also found it very difficult to find the connection between the lectures and practice sheets (TREAT THEM AS PROBLEM SETS THO. IT'S NOT ABOUT GETTING PRACTICE). So I relied on the TAs a lot! My TA was amazing and he was willing to overlook tiny errors for most of my assignment. He also helped me a lot to figure out how to approach the problems. Honestly, if you are planning on taking this course, when doing the problem sets, figure out how to approach each of the questions. Like what info to look out for in the questions and how to use them and things like that. More about prof would be that she is a nice person but she really doesn't seem to care about how much pressure she puts on the student. Like the quizzes which make up one of the largest parts of your grade, she gave only 20 mins. When we requested more time, she just seemed to turn us down. Not just that, often time it seemed like she dismissed our feedbacks. In fact, she specifically mentioned she wants the time pressure. But she replied to her emails within a week. However, I was often redirected to the TA's instead. However, I have to admit I liked the class structure now that I am done with the class. The workload was evenly distributed in a way that it was impossible to fall behind on the content unless u give up on the class. Also loved how we went from bits and logic to eventually MIPS how codes actually languages like C and java to bits into MIPS and then binary. Like the progression was PERFECT! really tied everything in. Word of caution: DO NOT POST QUESTIONS ON SITES LIKE CHEGG OR OTHER THINGS LIKE THAT. Don't even use it. Lots of students got in trouble for this. Go to TA's instead, or ask a friend. My friends were really helpful.

Jan 2021

All the previous reviews of this instructor are pretty much spot on. She's a nice person and all, but sadly, she really shouldn't be teaching. Her lecture notes/slides are almost useless for completing her practice sheet questions, and she absolutely will not give you any advice/hints on piazza. Instead, she just shuts you down and sometimes deletes piazza posts out of "academic integrity" concerns. It's a bit ridiculous/neurotic honestly. The worst part by far is how she DELIBERATELY adds hard/trick questions to the practice sheets, just to make them harder and bring down the class average. Because her lecture notes are almost unusable for understanding the practice problems, you basically have to meet with your TA and teach yourself the material from the book. Her teaching style is incredibly strange, in that I feel she intentionally leaves out important details in order to "make room" for the harder problems. Thus, you have to look up/teach yourself the concepts she deliberately left out in order to complete the practice sheets. Luckily, my TA was incredibly good, and I credit them with actually teaching me the material from this course. I have no issues with intentionally adding harder problems into the practice sheets, but it should be done in such a way as to enhance student learning. With Kim, she does it simply to make things more of a challenge, and nothing else. There is literally no other purpose to adding these "trick question" type problems that make you spend hours and hours trying to figure them out. This instructor also constantly corrects herself, to the point where I wonder if she actually understands what she's saying. I hate to be so negative, she's a nice person and all, but she should really change her approach to teaching. It seems she's VERY worried about her class being "too easy". Instead, she should approach teaching with the end goal of enhancing student learning.

Jan 2021

Prof. Kim is a decent lecturer at best. I can tell she's passionate about the material she teaches, but unfortunately, she suffers from glossing over/oversimplifying important concepts and underestimating the importance of specific details in order to properly complete her problem sets (she calls them practice sheets). Her lectures are only useful for understanding the material from a "big picture" perspective but are not very good for developing a more refined base of knowledge needed to complete the problem sets. The problem sets often draw upon information/concepts that were only given a few moments of time during a lecture, (if at all), but really needed to be addressed in more depth in order to complete the problem(s). There are frequent oddball type questions that, again, are there simply to make the class/problem set more difficult. To do well, you should meet with your assigned TA as often as possible, and read the book. Due to her teaching style, it seems she designed the class to make it harder than it really needs to be, just for the sake of making it hard! This makes getting full credit for the problem sets quite difficult and doing them becomes quite arduous and very frustrating. Learning basically becomes a chore with this instructor. She is also incredibly unaccommodating for specific personal issues you may have encountered/experienced as a result of the pandemic/online only learning, as "she wants to be fair to the rest of the class". I found this incredibly strange, as we are in the depths of a global pandemic, but I suppose each instructor is entitled to grant or deny these types of requests based on their own judgemental standards. Regardless of her drawbacks, I did enjoy this course, especially the last half when MIPS programming is taught and tied into the concepts of the earlier half. Everything comes together very nicely, and you do get a good idea of how all the individual components/concepts you learned fit into the greater whole of the class.

Jan 2021

Honestly, I wasn’t a fan of how the course was structured this semester. Prof. Kim is an okay lecturer at best, but she tends to oversimplify everything, so her lectures are practically useless. You’re better off reading the book to do her practice sheets. The quizzes are tricky, but they’re doable if you watch the TA’s review videos on YouTube. For what it’s worth, I took this class in Fall 2020 and heard from some friends that Prof. Kim wasn’t accommodating of extenuating circumstances just to be "fair" to the rest of the class. I never had issues with her though. I only wish that she would stop experimenting with the class (outside of these remote semesters) so there could be some consistency across terms, but that’s about it. The curve wasn’t bad, but I wouldn’t call it great either.

Jan 2021

I took this course during Fall 2020 when all classes were virtual and it seems like she changed the way that she has structured her course to accommodate that. Overall, I would say that the class was very good, with some flaws that didn't make it perfect. She lectures pretty clearly and has a solid grasp of the material. She was also very nice and had some funny quirks in class! Since we were all taking the course virtually, she decided to split the class into three components: reflections, homework and quizzes. She kept a very consistent schedule with a reflection and homework due every week (with the exception of breaks), and quizzes (administered on CourseWorks) about every 2 weeks. I would say this was a very effective way to spread all of the points in the class out without having any make-or-break exams/projects during a semester that I'm sure has been difficult for everyone involved. Professor Kim and the TAs ran a very well organized and responsive Piazza. I was very appreciative that there are at least some professors that are taking into account that the semester isn't a normal one. That being said, there were some parts of the class that weren't so great. While I think Professor Kim's lectures were clear, they sometimes seemed disconnected from the homework given to us. While the majority of each week's homework was easy to get most of the problems done, it was very hard to get full credit, as there were a good amount of curveballs thrown. They seemed either completely random or too complicated for the level at which the lectures were presented. Many times, at the end of the semester, it was easy to misinterpret the question and approach the problem incorrectly. However, my TA was very helpful and I probably wouldn't have as good of a grade in my class without him. A few (Not many! But a few) quiz questions weren't super clear and could easily lead to getting the question wrong. But, with all that being said, I learned a lot and I would definitely recommend taking Professor Kim's class! She cares about students and the experience of students.

Jan 2020

I took it in the Fall 2019 Semester. I was shopping and after reading all the comments, I had my mouse on the drop while taking her first class, but something changed. She turned out to be a really good lecture, and I ended up taking the course. I thought she did an excellent job in teaching the material. This being said, I owe a good chunk of my A- to my TA, Stanly. He was an amazing TA and gave a week-long (each day 12 hrs) of TA OH during finals week. As for Martha, she was still a very great lecture and I feel conveyed her point. She noticed in Piazza that people still struggled in certain topics, but she went over them again during the review session, which really helped. I recommend you keep track of the review session material because, at least in my semester, she tested on them. All of this being said, even though I loved her as a lecturer, the class was a sh*t show after the midterm. It got entirely overly complex and I couldn't understand what was going on. I had a near-perfect score in the midterm, so that is telling you something. I asked around, and people were lost as well. Before the midterm, she would spend a lecture or majority of a lecture on simpler stuff, but after the midterm would spent the exact same amount of time on very complex diagrams such as processors. I found the processors stuff very difficult. My recommendation is to read the book regarding those sections (MIPS, Processors) before class. The book did a great job in explaining them, wayyyyy better than she did. Because of this, I went from scoring near perfect on the midterm to terrified of getting a C or worse in the final, but the TA, Stanly, did a week-long OH during finals week where he offered OH from 8 am to 8 pm. He was a legend and I owe my A- to him. I went from barely understanding anything post-midterm to being confident with one day of his help. My recommendation is to make sure you understand the practice exams by heart. I found most of the P-set problems hard so didn't bother to do them, some did, they said it helped. Up to you if you want to do them. I recommend you also go to the weekly recitation session because it is both an easy 30% grade for the class and also because it is a great way to ask questions on anything you are lost in.

Jan 2020

She was a boring lecturer, but was obviously passionate about the material. She really worked to improve this course last semester because everyone said it was absolutely brutal in the past. She was generous with extra credit, curving everyone's grades based on how many study sessions they went to, which I appreciated. She also makes the midterm/ final grade weighting be 40% and 60% of your final grade, or 30% and 70% of your final grade based on which gives you the higher final grade which is great. I didn't really go/ pay attention after the midterm, but reading the book and doing the problem sets was always enough review to do well on the exams.

Jan 2020

Our semester was the first to change back to her previous teaching style, which was just attendance during study groups and exams (no homework). After hearing how crazy her previous teaching style was, I would say it was not that bad this time around. Her slides are also designed to be quite useless when you self study; so either come to class and pay attention or self study the textbook (quite helpful actually). Go to all the study groups, it actually affected my grade. I thought her exams were quite fair. Overall, thought it was fine -- she was nice.

Jan 2020

The lectures are absolutely boring and the lecture slides don't help explain concepts as they are very limited with no text. You are basically screwed if you miss a class or lose your focus in class (which will happen because the lectures are so dry). The exams are however easy and so is the curve so you don't need to worry about the grade so much.

Jan 2020

Writing this as an update since the course has apparently changed a lot since the last reviews. Basically, now there are 8 problem sets but they aren't turned in or graded, and your grade is based entirely on your midterm, final, and attendance to optional recitation sections. Because of the optional problem sets, I mostly blew off this class. I did virtually no work besides a day or two before the exams, and just crammed then. I missed class a decent amount (especially after the midterm) whenever I had a lot of other work. When I did go, I was not very focused and didn't take notes. In general, though, the class was fine. It was relatively easy and I got a fine grade despite blowing it off. The material is interesting at times, but often it felt like we weren't going into enough depth to really learn much. Lectures were decent but often I felt like Prof Kim would touch on many topics briefly (for example, different kinds of circuit components beyond the basic ones) without going in-depth, so it felt like she was lecturing on things that we didn't really have to know. Since we wouldn't go that deep into topics, I often found the problems she gave in problem sets were either very easy or were too difficult to really understand based only on what she taught in class. The first half of the course covered basic circuit stuff, with combinational and sequential circuits building up to Mealy and Moore machines. The second half covered MIPS and then 3 sample MIPS microarchitectures that show how a processor actually works. There were 8 recitation sections, and they felt pretty much useless. The sections are meant to go over questions from each week's problem set, but mine met the day after the problem sets were released so literally no one had done them. I would guess that even on other days, most people didn't do the problem sets. You could probably get more out of the recitation sections if you kept up with the problem sets and asked questions, but I basically went and zoned out for an hour. The TA wasn't great either, he had a decent command of the material but sometimes couldn't answer questions, and he had taken the course with a different professor who emphasized different parts of the material. Recitation attendance is optional, but helps your grade. If you attend all 8 recitations, your grade is 30% recitation attendance (which is effectively 100) and 70% from your exam grades. If instead you attend 4/8, you get 15% of your grade from recitation, and 85% would be based on your exams. This is pretty nice, but the actual grades are just based on a curve of the raw grades, and most people attend most of the recitations (mean attended was like 6.5), so the actual affect on the grades is probably kind of modest. I think the curve was pretty nice, probably like median B+. I did pretty well on the midterm exam and basically average on the final and got a decent grade, so can't complain since I put very little effort into the course. Overall, it sounds like the course is much easier than it used to be. You can get by with minimal effort, though you won't really get that much out of the course.

Nov 2019

absolutely the worst person ever.

Apr 2018

The devil incarnate

Mar 2018

This is the worst CS class I've taken at Columbia by far. Expect extremely large projects that have nothing to do with what is covered in lecture, and a fucked up grading system that doesn't reflect how well you understand the material or how hard you work. Oh and by the way, unless you pass 100% of test cases, you get a ZERO on the project. You only start to earn points through optimization of your circuit. I got the highest possible score on the first 5 projects, and got a poor score (I think around a 30% or something) on the last project, and ended up with a B in the class. I'm honestly not sure how it's possible to get a good grade in the class. Moral of the story: RUN AT ALL COSTS. Rubenstein may have poor reviews but there is no possible way his class could be worse than this. Martha Kim ruined my semester and I have no respect for her - classes like this are why Columbia has a mental health problem.

Jan 2018

The review above is a COMPLETE lie. Martha is a nice person on the SURFACE, but she is a TERRIBLE professor and has utterly no sympathy for students (she regularly shuts people down on Piazza for asking questions or gives the most cryptic answers to reasonable questions). It's either a 100 or a 0 on any single given project (see workload for Fall 2017 insanity and please note that getting a 100 on any given project is no easy matter) and nothing she says in class is useful for the projects (ex: I stopped going to lecture and was at more of an advantage to other kids who went because I had more time to work on the projects). I want to keep this short so you can judge the workload yourself. CS Majors, it truly sucks that you'll have to take this class but everyone else, don't be a hero and take this class or any other class she teaches.

Jan 2018

The review above is a COMPLETE lie. Martha is a nice person on the SURFACE, but she is a TERRIBLE professor and has utterly no sympathy for students (she regularly shuts people down on Piazza for asking questions or gives the most cryptic answers to reasonable questions). It's either a 100 or a 0 on any single given project (see workload for Fall 2017 insanity and please note that getting a 100 on any given project is no easy matter) and nothing she says in class is useful for the projects (ex: I stopped going to lecture and was at more of an advantage to other kids who went because I had more time to work on the projects). I want to keep this short so you can judge the workload yourself. CS Majors, it truly sucks that you'll have to take this class but everyone else, don't be a hero and take this class or any other class she teaches.

Jan 2018

Kim is a humble professor who is good at putting her thoughts into clear explanations. She is sometimes good at detecting how much people understand the content she is teaching. However, material presented in lectures sometimes were a lot and would be better suited to be in reference books. That type of material was glossed over and lectures on that made me intimidated, although also a little enlightened by what was available. Like Stephen Edwards' PLT slides (and perhaps because these slides were borrowed from Edwards), the slides were mostly show-and-not-tell. In other words, little reasoning was included in the slides. Mostly, I had to either be very alert and think as fast as I could during class to understand what was going on the slides, or accept the fact that there weren't exams anyway so we didn't have to understand things but think about how I might need to know those concepts to do the projects. It would have been more productive for us to learn approaches to building circuits, rather than only show us extremely advanced examples. The examples gone through during class were intimidating and misleading in their complexity and tediousness. In conclusion, although Kim started out as a terrific lecturer, this class ended up crushing dreams and was a terrible decision. I don't recommend it.

Jan 2018

Kim is a humble professor who is good at putting her thoughts into clear explanations. She is sometimes good at detecting how much people understand the content she is teaching. However, material presented in lectures sometimes were a lot and would be better suited to be in reference books. That type of material was glossed over and lectures on that made me intimidated, although also a little enlightened by what was available. Like Stephen Edwards' PLT slides (and perhaps because these slides were borrowed from Edwards), the slides were mostly show-and-not-tell. In other words, little reasoning was included in the slides. Mostly, I had to either be very alert and think as fast as I could during class to understand what was going on the slides, or accept the fact that there weren't exams anyway so we didn't have to understand things but think about how I might need to know those concepts to do the projects. It would have been more productive for us to learn approaches to building circuits, rather than only show us extremely advanced examples. The examples gone through during class were intimidating and misleading in their complexity and tediousness. In conclusion, although Kim started out as a terrific lecturer, this class ended up crushing dreams and was a terrible decision. I don't recommend it.

Jan 2018

Kim is a humble professor who is good at putting her thoughts into clear explanations. She is sometimes good at detecting how much people understand the content she is teaching. However, material presented in lectures sometimes were a lot and would be better suited to be in reference books. That type of material was glossed over and lectures on that made me intimidated, although also a little enlightened by what was available. Like Stephen Edwards' PLT slides (and perhaps because these slides were borrowed from Edwards), the slides were mostly show-and-not-tell. In other words, little reasoning was included in the slides. Mostly, I had to either be very alert and think as fast as I could during class to understand what was going on the slides, or accept the fact that there weren't exams anyway so we didn't have to understand things but think about how I might need to know those concepts to do the projects. It would have been more productive for us to learn approaches to building circuits, rather than only show us extremely advanced examples. The examples gone through during class were intimidating and misleading in their complexity and tediousness.

Jan 2018

The last few reviews have hit the nail on the head. Don't be fooled by only 6 problem sets and no exams. I looked at earlier reviews, thinking the course wouldn't be too heavy. I was completely blind-sided by the workload. The standout positive aspect of the course were the TAs which were all absolutely fantastic and much more helpful than everything else, slides, lectures, and textbook. I spent about 2x the average time at TA hours in this course, as it was practically mandatory to complete some of the assignments. I NEEDED to attend OH to get anything above 0. I wasn't the only one with this approach as there were regularly 30 people there, clogging up that small TA room, and resulting in a 2 hour wait to talk to a TA for 5 minutes. Like others have said, projects 1-4 were okay. After project 4 I thought surely this is the toughest it can get, omg how wrong that was. Project 5 and 6 went off the rails with difficulty. Maybe not for a hardware engineering major, but for CS students seeing this stuff for the first time, yikes. It's also important to note the TA's reactions to the different projects, most were excellent from projects 1-4 and it seemed almost elementary to them. This broke down a little on 5 and 6, I could tell some of them were less confident in the material. Not to mention one project was given to the TAs same time as students!! The problem sets completely dominated my semester. I could do nothing else while one wasn't completed. To add insult to injury, putting 30+ hours into an assignment can still result in a 0 regardless of how close you are to a working solution. The prompts are purposely vague and requirements could be boiled down into one sentence, which meant going to office hours just to understand what was required. The assignments are generally all frustrating, often operating on a single crux. If you got it, the rest was easy and you'd get a top score, if you didn't get it, chances are you got a 0. TA grading was black and white, except for some edge cases. If you miss something small and obvious that has no bearing on your understanding of the material, nor the focus of the particular assignment, you're getting a zero. All of this wouldn't matter if the material was super useful for your career, but for the majority of CS majors who will be doing software development, this course doesn't return much in practical skills. The MIPS programming is an exception to this and is by far the most valuable thing you will learn.

Jan 2018

Martha is a great lecturer. When she speaks in class it's generally very easy to follow and the subject material is always very interesting so it's easy to be engaged. She's also very good about taking questions and stopping and going back to review places where people have indicated confusion. The same goes for her office hours. I HIGHLY RECOMMEND going to her office hours. Even if the people there have questions that you're already clear on it's always illuminating listening to her explain concepts. She really goes out of her way to try and help the students that come to her office hours. Like, I've been there at its peak where there are 20+ people in a small office space and she's taking questions and explaining them painstakingly and patiently or she's on her knees since she's offered all her chairs to her students and she's reading a massive circuit to try and troubleshoot some edge-case bug. Truly, she's a great professor. That being said, the way the class is organized is a bit uncomfy. The project-orientedness is nothing new for a CS class but the way that they're graded can leave a lot of work unrewarded. At the very least, it's all entirely objective for better or for worse. The good news is you can typically accurately calculate what you're going to get. The bad news is it's very hard to argue a better score later. Any distribution in score comes from optimization whether it's from gate count or CPI. However, if you fail her entry cases it comes to a 0 regardless of how close you got or the optimization algorithm beyond it. Coming very close to having a working circuit and submitting an empty file will get you the same score which is something that's really harsh. The first 4 projects ranged from easy to doable; averages were in the 90s. The distribution really came from the final 2 projects that were centered around CPI optimization so the averages were in the 60-70 range. All this being said, I still highly recommend this class with Martha. Even though the grading scheme feels a little unfair at times, you really do learn a lot from a great professor. Also, so long as you get a working circuit that passes her entry cases you don't have to worry about getting a 0. The material forces you to think critically and is very engaging. I found even when I wasn't working on the projects I wished that I were.

Jan 2018

Believe me: This is how Columbia students get depression!

Jan 2018

I dare say that taking this course with Prof. Kim was one of the WORST decisions I've ever made here at Columbia. I won't overgeneralize and state that such was the case for everyone, but I do know that a lot of my peers who were also enrolled in the course had a hard time. If you're considering taking this class, please note that she changed the organization of the course entirely starting last fall (Fall 2016), getting rid of exams and giving grades only based on the projects that were given out throughout the semester (6 for Fall 2017, 4 for Fall 2016). Just to share a few things about my experience: - I wouldn't say she's a bad lecturer, but she's not a great lecturer either (as some of the older posts suggest). - Lectures were less and less helpful as the course progresses, which is bad since the projects get much harder, especially for the last two. - How you perform on the projects do not reflect your level of understanding about the material. You can still end up with bad scores and ultimately a bad grade even if you have a solid understanding about the theoretical concepts, due to lack of experience in circuit implementations. - Too much focus on performance and optimization for the latter projects. Functionality does not guarantee full credit; you can still end up with a 0 even if your design works. Sure, I understand performance is important in circuit design and that there should be a means to distinguish those who have put in the work and have performed better than others, but considering that this is an "intro" computer architecture class and that most people are using logisim (the circuit simulation program we used in the course) for the first time, I think the grading scheme was too harsh. Doing well in optimization tasks requires a lot of experience, and it wasn't like she provided enough guidance or knowledge for people to cover that up. It was very, very frustrating. - Nobody even knows how she calculated the grades in the end. To a question on Piazza asking about the curve and the final grade distribution, she answered: "I set and do not publish cutoffs as those are my judgement calls and not something that is up for debate/discussion."

Jan 2018

It seems like every reviewer on here expected Kim to soften the rough edges as she taught more, but that hasn’t happened. The assignments still vary greatly in difficulty and time requirements, the lectures still cover easy concepts with little to no focus on the much more challenging aspects of application, Kim still corrects herself in class (to the point where sometimes you don’t know what is right or wrong). Email reply time takes a long time and the administration of the class is poor. The TA review sessions sometimes strayed with TAs solving problems incorrectly. On top of that, the curve is very harsh now; it seems like average was a B- based on my conversations with others who took the class. Style points (+10 to prettiest solutions) skew the curve on efficiency based assignments (since the highest possible grade was in the 60s-70s for both of them but the +10 style points made it as if it was in the 80s). Like before the curve is basically determined by those last two efficiency-based assignments (out of 6) which means consistently good performers got meh or even bad grades for doing average on two assignments out of six. Overall, it seems like Kim isn’t taking feedback from students year to year. If anything the faults have worsened over time. This course is required for lots of majors but otherwise would not recommend.

Jan 2018

Agreed with past two reviews, this semester it seems like this class really took a turn for the worse. Projects were alternately a joke or really hard with no rhyme or reason and while the material was interesting the projects were barely at all even related to lectures. Final grades barely reflected performance on the projects. Last few projects which were performance based were initially graded on an arbitrary scale (since prof Kim did not know how they would perform) and then not adjusted accordingly before final grades were tabulated. If this class is gonna be based only on projects then the projects should be designed and tested before giving them to us! Our grade depends on them! But until then she should defintely go back to giving a mix of tests and projects like most classes

Jan 2018

This course has changed from previous years, apparently. I have never seen students put in so much work for a class and get such little return on their investment in terms of grades. This class does not account for effort in any shape or form. The tests she designs to test your circuit are at best surface level and the TAs don't even glance at your circuit to see how hard you tried. Obviously I'm not a circuit engineer but I can see merit in awarding students points for at least building the underlying functionality associated with the prompt even if it doesn't pass the most ridiculous handshake tests. There were 6 projects in Fall 2017, with the first 4 being doable and the last 2 extremely difficult. Mental health goes out the window because the last project was due in the middle of reading week, and takes up to 40 hours for the average student with testing, OH, and talking to other students. Because there were 6 projects, they didn't have a lot of spacing between them, especially towards the end of the semester. There isn't a lot of space given if you slip up--there's like 3 late days for the entire semester and only 2 can be used per project. Also there's very little point going to class, the material is in no way related to your understanding of the prompts. If you want to learn about the field and what a processor looks like etc, then go. She was a pleasant lecturer, and answered questions in class. Before the due date of every assignment, she would do a 5 minute quick review of the prompt which was helpful sometimes. Hope this course changes/becomes a little more of a modern discussion and application based class. Best of luck to others!

Jan 2018

If you're looking for the manifestation of the worst qualities in a college course ever, look no further. Fundamentals with Martha is by far the worst CS class, and by extension the worst class I've ever taken in my life. The class is 100% project based, and let me tell you, they're brutal. This semester there were 6 projects, projects 1-4 being fairly easy (averages were high 80s-low 90s), and projects 5-6 impossible. The projects are designed in a way so that you either get a 0 or a 100. (actually, more like 0 or 80-90, and then you climb your way up to 100 by making optimizations). This means that if the project takes 20 hours to complete, even if you spend 18 hours on it, you'll get a 0. So your final grade is pretty much based on projects 5-6. Let's talk about projects 5 and 6. They are ridiculously hard, to the extent that some of my friends actually cried doing them. Not only that, the project is "out of" 100, but even Martha can only score a 67 on project 5 and 73 on project 6. Why would a professor have you do a project that she can't even score a perfect score on? And these scores are calculated directly into your grade, meaning you're considered "doing well" if you get a D (67). If you used up your late days (you get 3), every day after that is a 15 point deduction, regardless of the project. This means that handing this project in late by a day leaves you with a 52 - basically an F. Like what the hell. The TAs for this class were virtually useless. Office hours were always crowded, with 2 hour long lines just for 5-10 minutes with the TA because everyone had issues of their own. Most of the time even the TAs would have no idea what was going on yet people still went to them because no one else in the class had any idea what was going on. Martha always seemed annoyed in her office hours as well, very reluctant to help out students stressed out by her own concoctions. The cherry on top is that you don't learn a single thing from taking this course/attending lecture. Most people who take an introductory systems class at any college knows what an ALU is. I can safely bet that 90% of our class didn't even know what it stands for. The class being purely homework based, people started not showing up mid semester. She also makes careless mistakes during class which was a huge turnoff. You know it's a poorly designed course if you can theoretically do project 6 on the first day of class and going to lecture for an entire semester likely had no impact on your performance overall. All you have to do is learn how Logisim (software for designing circuits, which by the way, is not even in development anymore) works and just do every project. Lastly, this class made me hate computer science. My logistical complaints with the course aside, if a professor who teaches a CS core class makes you hate a subject you like, the professor shouldn't teach that class. This class singlehandedly ruined my semester. Pro tip: avoid Martha Kim at all costs. Based on the final grades, pretty sure she curved to a B-.

Jan 2018

tldr: this class was nothing like the previous reviews. the lectures are useless for the projects. the projects are insanely hard for no good reason. martha kim was not caring like some previous reviews mentioned but seemed to gain pleasure from giving people 0s on projects. the curve is bad. she might change, since this semester seemed like an outlier, but i personally had the worst educational experience in my academic career so far and i would not recommend this class to anyone. here is a list of things that i felt was wrong with this class: 1. first four of the six projects all have super high average (around 90). if you mess up on any small thing, even something she did not mention in the prompt, there is a high chance that you will get a very low score, including 0. for instance, in one project she first gave some people 0 out of 100 for not having the correct reset behavior but otherwise perfect circuits. she did not mention anything about the reset behavior in the prompt, and so later gave these people 80. there are many other examples where people turned in the circuit thinking they have a functional design, but because of her failure to fully describe the specifications, ended up being surprised by poor scores. 2. there are so many specifications you need to meet. if you fail to meet any one of them, you get a 0 regardless how else you have demonstrated what you learned in this class. while some might argue this is how things are done in the “real world”, but i think for a class where each project weighs about 1/6 of the entire course grade, giving out 0 out of 100 so easily is seriously wrong. 3. the later 2 projects are supposed to separate people, so it’s about how well you can optimize. here’s a quick fact: about 1/3 of the class got 0 out of a 100 on project 5. the averages and medians are really low for both of these two projects. i spent five days straight working exclusively on this project, and ended up being right above the average. i never worked so hard on any school project ever. i know at least four other friends who worked even harder and received poor grades. it’s really not about how hard you work. 4. project 6 was due on the THURSDAY OF READINGS WEEK, just a week after project 5 was due. because these two projects were so hard and took so much of my time, i was not as prepared for the finals as i should have been. i’m not sure if that was even allowed, but it was a real pain in the ass when you are trying to study for other finals but had to be stuck with two hardest fundies projects of the semester. 5. sure there are people in this class who are very passionate about the material and spend a lot of time on the projects. but based on the experiences of most people i know in this class, they are taking this class only because its in the CS core. most people will never touch these stuff again and absolutely do not have interest in the low-level stuff. this class definitely failed in both properly introducing people to the field and giving people a general idea of how things work under the hood, given how difficult the projects are. what people learned in class is virtually useless, which defeats the purpose of projects. 6. the TAs are literally incompetent. i went to many office hours and one time for project 5 the TA told me the completely wrong idea, which is later corrected by another TA (Tom, who seemed to be the only legit one). i feel like most of the time their lack of knowledge and/or poor ability to teach only confused the students even more. 7. Martha Kim is nothing like what the previous reviews said. she did not postpone a project due during midterm week, which is fair i guess. but scheduling projects 5 and 6 so close to each other and one in readings week was a huge fuck up. students really suouldn’t be penalized for her own poor ability to schedule things properly. in addition, like i said the numerous specifications make you think that she loves giving out 0s to people and see them suffer, as demonstrated by ~60 zeros for project 5. 8. curve??? i got basically perfect on the first four projects and 50ish on the later two, which are all above average, and i got a B?? based on my experience with the CS classes, i was expecting an A or A-... this class was a total nightmare, and i just hope that i will never touch anything lower than C and see Matha Kim again.

Dec 2017

Don't be FOOLED by the reviews! The course is different from the reviews. Now the course consists only the projects. The lecture weren't that helpful for the projects. And the way she grade the project is by the number of test cases. If you made everything right, you will get 100. But if you messed up with one tiny thing, you will get a super low grade. So the grading cannot show the understanding and effort fairly. Most of the projects were frustrating.

Oct 2017

Awful. She's nice enough but doesn't know anything about academic policy, running a class, or how a curriculum should be designed. While her lecturing is clear, she's an absolute bore, and you will do well by just reading the slides.

Jan 2017

Martha Kim was a great lecturer. She basically followed the textbook's cues, but she did put effort into explaining the material, taking questions, and teaching well. She is genuine and helpful during office hours and tends toward leniency. She never came off as jaded, mean-spirited, or apathetic, like a lot of professors here do. When students pointed out to her that a large CS Theory assignment and a large AP lab were both due on the same day as one of her assignments, she agreed to push her deadline back a few days and give us the weekend to work on it, which was pretty cool. That being said, she really screwed up the grading for our semester. The first two projects were too easy, with median grades around 95, and the last project was too hard, with a median grade around 40. The curve depended mostly on the third project -- in other words, our performance in the class was more or less determined by one assignment. To some extent, she admitted that she made mistakes and was trying out the project-based assessment scheme for the first time, and she curved the class generously to compensate. I don't think she'll let that kind of thing happen again. The TAs for the class were pretty bad. More often than not, it seemed like they didn't know what was going on. This could be attributed to the brand new set of projects Martha developed for the class, with which neither the TAs nor the students had any experience. Overall, good teacher and very interesting material, but bad support from the teaching staff and very messy grading.

Dec 2016

Her class was my absolute favorite in the CS core. Her lectures were crystal clear and the workload felt like the perfect amount. It was challenging enough that it would genuinely help me apply my knowledge of the material, but it was not overwhelming like in many of the other CS classes. This is definitely one of those CS classes you can use to balance out your heavier classes. The first half of the class is said to be easier for the Engineering people, and the second half of the class is said to be easier for the CS people. However, I found the first half to be easier (and more interesting/fun), and I am a CS person. So, this may or may not apply to you. Professor Kim makes all of her slides available online, so you can take a peek at the material beforehand to get an idea of what the class will be like. tldr: The class is one of the lightest in the CS dept. She is a clear and approachable lecturer. Take a class with her if you can!

Jan 2015

Professor Kim was a great, engaging lecturer. She was clearly working hard to make sure everyone in the class understood the material, and showed a level of commitment to teaching that's unusual at Columbia. She offered very clear and thorough explanations of topics. She took many questions during lecture, and answered them quite well. She was incredibly patient, including spending lots of time in office hours answering questions. I didn't work with the TAs much, but they seemed to all be pretty decent, and were generally very responsive on piazza. I felt like this class was the easiest in the CS core, along with CS Theory. However it was useful and I found it kind of fun. I would have actually appreciated slightly more workload, and slightly harder exams, since a tiny mistake could have cost you a lot given the structure. Overall I highly recommend Kim.

Dec 2014

Professor Kim does a really good job with this class. If you have a decent CS background it shouldn't be too challenging -- you don't even have to go to class if you read the textbook, because she follows it very closely -- but it's pretty neat finding out what happens below the level of the level of C code. Professor Kim is a good lecturer and really good at explaining tricky concepts to the greener students. If the class hadn't been at 10 AM (waaaay too early for this senior) I would've gone more often and likely gotten a lot out of it. When I did go, Professor Kim would mention neat factoids not covered on exams but still good to know, like (my favorite): Intel kept adding more stages to its pipeline in the '90s so it could ramp up its clock speed, and had to change its advertising strategy to deemphasize clock speed when it turned out fewer stages was optimal and clock speeds decelerated as a result.

Jan 2014

I agree with the review below that Martha totally puts in 110% effort to give good feedback and make sure the class runs as smoothly as possible. A further example is that when she found out that her final letter grade script had a bug in it, she sent personal emails to anyone who contacted her about it (within 24 hours on top of that) and promptly fixed the issue. With regards to her teaching, I would say that she is not quite on par with Adam Cannon or Jae yet. However, in looking at her previous reviews and comparing it with my experience with her this semester, it appears that she has improved a good amount. My guess is that if she keeps refining her teaching skill, she can eventually teach at that level. One thing that others have not mentioned is that you will be programming in MIPS Assembly Language for one of the psets. My suggestion would be to take AP (3157) before or at the same time as this course (I did the latter) since AP really gets you thinking in terms of lower level computing, which makes the assignment much easier. On the whole, AP and Fundamentals really seem to complement one another, so try to get AP in first or at the same time.

Dec 2013

Martha is the kind of professor who doesn't mind reteaching an entire day's worth of material if students seemed like they weren't totally clear. She is also the kind of professor who takes in student feedback about ambiguity of problem sets, sends out the clarifications well before the sets are due, and changes how the question is worded so it will be clear for future classes. (Her slide sets are like finely aged wine.) She gives eminently reasonable problem sets and tests (1 midterm, 1 final, noncumulative) and once got off an airplane to fix a glitch in her website that students needed to access for a problem set. She also had a great sense of style, is genuinely and adorably amused by things like slow processors, and will explain things for you in multiple different ways until you get it. She's on par with Adam Cannon and Jae in CS-prof god(/dess) status. If you get her for fundamentals, be elated.

Nov 2013

Prof. Kim really cares about the students and their learning. I appreciated her approach to midterms and homeworks - there is always ample material to help aid your studying, and she and the TAs are very responsive via email. She leaves a day to review before the midterm, and we could send in questions to help direct the midterm review session. Grading seems very fair, and solutions are explained in class when we receive our homeworks back. The material is nothing incredibly exciting, but Prof. Kim does a good job breaking it down into understandable chunks so that it's not too overwhelming at once. The midterm was an accurate assessment of what we were learning in class, and the average was something around a 76 I believe, with many people scoring in the 80 and 90 ranges. Additionally, there is no required textbook, and she only expects you to know what she covers in the slides, which was a relief when studying for the midterm. Overall, solid class. I have no complaints.

Oct 2013

Martha Kim is fantastic for several reasons: 1) She is a VERY clear lecturer; she teaches directly from slides that on their own are very descriptive, and goes through them at a pace that is easy to follow. She is extremely eloquent and obviously very knowledgeable about the subject material, so it's really easy to follow and engage with what she's saying; she's not one of those awful lecturers who you have to really actively try to pay attention to for the whole class. She intentionally goes over slides with diagrams a little longer than other slides so that students who like to take notes have time to copy them down. There was one day when she had to rush through how Karnaugh maps worked, and in the next class she apologized for the lack of clarity and spent probably the first third of that class re-explaining them and really making sure everyone understood what was going on. If you go to class (and are at all awake/paying any amount of attention to her) you will understand the material. Point of the story: her lecture style is succinct and easy to follow and if you pay attention in class she will teach you the material. 2) It seems like she really genuinely wants everyone to succeed. She holds more office hours than any other compsci professor I've had and every time I've gone she is really approachable and has seemed genuinely concerned about making sure I am not confused about anything (not to mention she's just super nice). She assigns a very reasonable amount of work because she doesn't want the class to be a source of unnecessary anxiety for students. That being said, the assignments are challenging enough that they definitely do make you learn the material to do them (which I think is a good thing). This is not an easy A class. You will have to do work. But she actually wants you to do well at it, which is definitely not true for every professor at Columbia. The only bad thing I have to say about the class is that the problem set grading has been a little haphazard - on the first assignment, the grading was really harsh, which a lot of students made a big fuss about; then on the next assignment, the grading seemed really easy. But this discrepancy in grading tolerance seems to stem from the TAs more than Martha Kim. Overall, she is very intelligent and also very nice and I think she's been a fantastic instructor for Fundamentals!

Jan 2013

Well, I am tempted to write this review because I dont want people to just live in ignorance that she happens to be from a great school/university and she can teach well. WELL NOTHING APPLIES. Also, because I am many of my friends got poor grades that costed me GPA and later job, I want to put my views/feedback/complains for all of you to view. 1)This course can be done in 30 minutes essentially. What I mean is that you wont learn anything great here except simple synchronizations mechanisms, which if you do 1 or 2 good problems, you can learn. 2) Whole purpose of "Vijay Saraswat' and IBM crap to teach this course is to get their language i.e. X10(that you are suppose to struggle to learn in this course) their research project @IBM famous in academia. NOTHING ELSE. There is not even documentation worthwhile reading for X10. 3) They have no clue how to teach, but SEAS department is really dumb fuck department that allows such courses to happen even when intentions are very clear of parties involved in teaching. 4)Martha kim is highly incompetent teacher. Her job in lecture hours will be just to sit back and reply to emails on her Mac. Once a while she would turn up to do announcements, afterall Columbia pays her for teaching.Really is that what she is required/supposed to do? 5) Vijay Saraswat's bubble is to let people try 'TRICKY' problems and they will learn rather give tricky problems in quizzes or exams. Asshole, if that is what is required to be done, why are you in class and even taking this course. Is that how a course is supposed to be taught. 6)I should say first Vijay and Martha should learn how to teach, take this course elsewhere say GaTech and then think about teaching.Assholes I just wasted my tuition hoping that I would learn something great. SHIT Seriously, I just feel so sad that Columbia being Ivy league could allow such cheap bastards to teach and even after complaints last year nothing was done ever to improve, except to remove exams from course. Not worthy course to waste your tuition on.

Dec 2011

Course without any textbooks/reference books Only thing you can *rely* upon is class lectures that are nothing more than few lines long on topics that range from almost everything to everything in parallel computing. One Instructor Vijay Saraswat is more interested in telling what X10 can do and what HE can do rather than teaching something that we could understand. One of the worst courses I took in all my life. Vijay did not teach rather he just tested again and again what students know beforehand....everything he spoke only 3-4 in class could make out what he is talking about.Worst idoit I have every seen.Really sick of this person and unable to find suitable words to match culpa requirements. All IBM bastards were equally crap and they were also not so interested in teaching but i dont know wtf.. Just could not make out things unless you studied them beforehand(I mean in your undergraduate or so..) Got really really frustrated after taking this course, did not learn anything great here except some shit like asyncs , streams etc.. Dont take this course unless you have to just fulfill credit requirements and there is no other course to take.

May 2011

This class is basically two classes combined into one. The first half covers digital design and the second covers computer architecture involving learning elementary programming in MIPS assembly. The Good: Martha Kim is friendly, approachable and helpful. She willingly answers questions in class and for the most part she answers them well - especially when it comes to the computer architecture, she knows her stuff well. She teaches from slides, and what's in the slides is pretty much what you're going to be expected to know for the class. The slides are easy to read and understand and have intuitive diagrams. A lot of the pictures are taken from the textbook. I found the course material interesting and valuable. What was wanting: The lectures were mostly very boring. She spent a lot of time explaining trivial things that we could have understood better and more quickly by glancing over the slides on our own time. Most of the lecture was spent in teaching relatively straightforward concepts but almost no time was spent teaching us to apply them. In other words we did almost no real problems-solving or "thinking" in class. Any examples covered, were for the most part trivial ones. As a result, there was a gap between the lectures and homeworks and an even bigger one between the lectures and the exams. The lectures certainly prepared us very poorly for the midterm on which the mean was a 52 and which was so long that almost no one actually finished. 6 homeworks in the semester, one assigned every two weeks, about 4 questions per homework. Given that we had two weeks between hwks, it was really very little work. I spent an average of 4-5 hours on each assignment, only about 2 of the questions out of 4 actually required thinking, although these ones could be tricky. The problem was that we didn't have enough of these questions and didn't have enough homeworks so when the midterm rolled around, we got killed. The final was non-cumulative and included everything from after the midterm. It was about the same length as the midterm but we had double the time so it was manageable. The mean was 63 - I got a 92. I recommend reading the slides and textbook very carefully. You need to have a complete understanding of the single-cycle and pipelined processors - especially the pipelined one and also get some practice coding in assembly.

May 2011

Like the person before me said, Martha is an incredibly nice professor. The course was well laid out with clear lecture slides that were all posted online before the class. That being said, if you miss a class (or a few) it's not too big a deal, but make sure that you go back and listen closely to the next lectures that expand on those topics because it can be easy to fall behind. Personally, on a few of the homeworks, it took me a little bit to understand what the questions were asking, but a quick conference with a friend uncovered that they were a lot simpler than what I was expecting. And if for some reason a concept doesn't stick, she drops your lowest grade. I would definitely recommend Prof. Kim optimistically to anyone who has to take fundamentals. This isn't a class to worry about and should interest people of all areas of study in CompSci, EE, and CompE with at least one topic.

May 2010

Martha is one of the nicest professors I have met here. She takes the time to try to help out students, wants to know their names, and tries really hard to be available. That being said, she is a new professor to Columbia, and it shows. Homework lengths varied greatly, and she often seemed surprised that things took as long as they did. She corrects herself in class so many times that it is hard to know what the conclusion is when she is finished. The midterm exam, for example, arrived nearly 20 minutes late since there was an issue with the printer. Why not print it out the day before? The average on the midterm was a 50%, and she seemed happy with that (I think it was higher than last year's). Hopefully with some more experience some of these rough edges will go away, as she has a lot of potential. A friend who took this class both with her and Rubinstein said that it is definitely better to take it with her.