Your feedback has been sent to our team.
8 Ratings
Hours/Week
No grades found
— Students
KCW is a terrible teacher and even worse exam creator. He lectures from hand-written notes based off the course textbook (which I personally found much clearer) which oftentimes contain major errors. He is decent at explaining the material on the notes but a little hard to understand; class attendance was very low since everyone just reads his notes online. His homeworks are very simple though sometimes tedious applications of the algorithms learned in the lecture notes and only take a few hours to do every week (approximately). However, his two midterms contained far too many problems to be finished in the 75 minute class period and average grades on both were very low. Additionally, many exam problems require much deeper analysis of certain algorithms and that is simply not addressed in the homeworks; as a result, all students were very under-prepared. Finally, in the final class period before the final, he legitimately says not to worry about memorizing the specifics of every algorithm learned cause he was going to provide them as necessary on the exam. We get the final exam and 75% of the questions require knowing a specific algorithm in its entirety. He is a mediocre-to-poor lecturer, unclear on expectations, and makes terrible exams. Avoid if possible.
I think Fall 2016 was the first semester that KC taught algorithms, but unfortunately it's not the last, because he's terrible at teaching algorithms. I really wanted to like KC . He seems like a nice guy, but his teaching style and class structure is unacceptable. You need a 94.5% for an A, which is ridiculous for a class like algorithms. Very few people got an A at the end of the course. His lecturing style was poor -- his notes are an exact replica of an out-of-date textbook which has a lot of out-of-date implementations of algorithms. By the middle of the semester, about 20 people would show up to class, with the class enrollment being ~60. That's because there was literally no point in going to class. He would just go on collab, pull up his handwritten notes, and walk through them. Whereas you could just as easily do that at home on your own time. Going to class did not enhance your understanding of the material, so most people just skipped class and learned on their own.
I don't feel like I've gotten much better at all at algorithms either. I learned some new concepts like DP/backtracking/BFS/DFS and whatnot, but the way homeworks and exams were done really makes me feel like I couldn't get through a technical interview STILL. Why? Because homeworks follow this format: "Based on the diagram on page 4 of the lecture notes, solve this problem using Dijkstra's shortest path algorithm." So we were basically tracing through algorithms rather than actually LEARNING how to implement them. There was VERY little actual coding by hand on the homeworks or tests, so most of the time you would just have to read through the notes to figure out how an algorithm worked.
Tests were also very poorly made -- very few people finished on time for any of the three exams. For a point of reference, the average on exams was about 70%. Most questions on exams are replicas of homework questions, like "Construct an optimal binary search tree from these nodes and weights." Like the homeworks, it was largely tracing through algorithms with about 10-20% of the test being actual questions you had to think about. He also lied to us for the final exam. He said that he would give us the algorithms so that we didn't have to memorize anything (He did that on previous exams, where he would give us the formula for an algorithm). However, on the final exam nothing was given to us. Questions were in the format "Solve this problem using interpolation search like we did in class."
Overall, I feel like KC is a knowledgeable guy, but he just has no clue how to teach a class. I really think that he could be a great algorithms professor, but he did too many things wrong. I wish everyone in the future taking this class the best of luck. Try to take it with Floryan/Abhi Shelat, I hear you actually learn a lot with them. (Although those instructors are also hard af)
The class's syllabus claimed that it is "designed primarily as the first course in algorithm design and analysis". In Kong-Cheng Wong's class, we designed zero new algorithms and did very little analysis. The lectures were not about high-level strategies for algorithm design, or about how to apply various techniques to solve new problems. Instead, he gave us an algorithm and its pseudocode, and he traced its execution by hand for some sample input. The homework assignments and exams primarily consisted of this hand-written execution, in which you write down all the intermediate steps of the algorithm. This is more tedious than it sounds. Given how many problems he puts on his exams, they are a better test of your stamina and memorization than of your understanding of algorithms.
Story time! The professor does not seem to fully grasp the material himself. For example, he attempted to derive the time complexity of mergesort on the first day of class; any CS major (or professor) should know that mergesort runs in "n log n" time. However, Wong not only ended up with "n - 1", but also did not even notice that his result was absurd, instead promptly moving on with the lecture.
In addition, the lecture notes are handwritten excerpts of the textbook, and he just reads off them during lecture. The textbook nevertheless does a better job of explaining the algorithms than Wong, but still is not good at teaching you how to apply what you learn to solve new problems. He also does not seem to believe in curves, but don't worry! -- your grade in this class does not reflect your fluency in algorithms. Fortunately, the homework averages only 2-3 hours a week, but what's the point when it takes the same amount of time to implement the algorithms in code?
TL;DR: incompetent professor makes an important class worthless
Ok, first of all, I don't mean to introduce any bias or complain about anything because of a bad grade. I got 93% ish and I am satisfied with what I got, considering the fact that I only spent LESS THAN 2 HOURS a week to do the homework. I think Professor Wong's exam and homework were fair in a sense that you can easily get a B even if you plan to spend like 1-2 hour a week and to skip all lectures. If you put into a decent amount of effort, you will end up with an A/A-. So don't just complain about the low average of the class, because there ARE 15 kids (out of 60 ish students) ended up with A/A-. So if you want a good grade, work hard, despite the difficulty of exams. And don't complain about the curve since professor stated his expectation at the beginning of the semester that you need a 94%+ to get an A. Although I DO THINK that's a pretty high bar, but I think it's fair because he said that on the syllabus. If you cannot get a 94%+, don't expect it's professor's job to curve that up so you'll have a nicer GPA. He's nice in person as well. (I understand it would be nice if he can curve that up though. I went through the class with everyone else.)
Then, time for constructive feedback (ok, who am I kidding, I meant complaints):
1) I spent less than 2 hours (sometimes less than 1 hour) studying and I spent less than 1 hour reviewing for each midterm. And I ended up with 93%. I know if I took one of the midterms more seriously, I could hook up with an A. Ok, that sounds awesome. NO WORKLOAD AND EASY GRADE.
But do you think it's even a good thing for a class as important as the algorithm? YOU "LEARN" ALGO BY WALKING THROUGH TEST CASES? I DON'T NEED A PROFESSOR TO TEACH ME HOW TO GO THROUGH TEST CASES. A KINDERGARDEN KID CAN DO THAT.
So this is the most bizarre thing I've ever encountered.
2) I personally sent out two anonymous feedback during the semester, mentioning that we would like to learn more about algo design or implementation and we were ready for challenges or 10+ hours of homework like CS2150. NO RESPONSES WHATSOEVER. I ended up coding on leetcode to learn on my own. Yes I still went to his lecture, out of courtesy, and to make sure I didn't miss any stupid expectation about the grading or exam and stuff.
I am not a CS major. I study math and stat. I probably don't even need this class for my career and my life. But I definitely understand the importance of algorithm to CS kids. It's a foundation for future learning. If you want to become a good CS scientist, DO EXPECT TO LEARN ON YOUR OWN, EVEN IF YOU ENDED UP WITH AN A IN THIS CLASS. There is much more that should be covered in the class but was not.
So CS kids, RUN FOR YOUR LIFE. If you have to take this section, expect to LEARN ON YOUR OWN.
3) Course content. If Professor Wong doesn't think the implementation is as important for this course, fine. A lot of other professors don't include the coding part as well. But if you want to make it pure math and logic (I think algo analysis is math in some sense). MAKE IT RIGOROUS. I want to end up with SOMETHING: either the ability to code it out, or developing a mindset to design algorithm, or thoroughly understanding the rigorous mathematics behind recursion. You will dabble in all of these areas mentioned above, but I guarantee you will end up ONLY DABBLED IN these areas, especially when you don't want to spend extra time learning on your own.
4) Yes, he lied about the final exam. May lying is a hard word, but he was absolutely not clear about the expectation. I was glad that I stayed up late and memorized everything. Practicing on my own also gave me more familiarity with the problem
To summarize:
1) To complain about the grading might be a little bit out of the way. I think it's possible to get A/A- and the syllabus was fair
2) He's nice in person
3) Everything else was horrible
4) One suggestion: if you expect your student to do exceptionally well (94%+) in order to get an A, at least deliver some B+ quality lectures so students will have the opportunity and motivation to learn well. It's an important class for CS kids, not only in terms of jobs and grades. It influences how CS kids see computer science as a discipline and their future career. I remember how I fell in love with coding after taking 2150 with professor Bloomfield. I hope whoever did poorly in this class don't feel hesitant about their future careers in CS because it's just a class. I don't think it fully reflects your aptitude and your potential as a developer.
This is the absolute worst class I took at UVA. Not because of the content but because of the professor. He is one of the worst teachers that I've had ever. Don't take this class with him. Since I don't feel like rewrite a long diatribe on him, here is what I wrote for course evals:
While, in general, an algorithms course should be the keystone of any quality CS program I cannot say that I had anywhere close to sufficient quality of education or experience from CS 4102 with KC Wong. Looking at the syllabus at the beginning of the semester provided me with the hope that I would encounter many complex, important, and exciting advanced topics as one would expect in a 4000-level course. However, the reality was that we touched upon slightly more than half the topics outlined in the syllabus.
Of the 10 chapters that we were supposed to cover, we only got to 5 and it was clear that the last chapter was rushed to completion so we could even get that far. We did not get to many incredibly important topics such as (these were taken from the syllabus) branch-and-bound, intractability, or discussions on computational complexity for different scenarios like sorting. According to this syllabus, on the last day of class we covered material that we should have been done with by the third week of March. I can understand some flexibility in a course in regards to material covered as there are always unexpected delays but the syllabus as it stands now amounts to what is essentially an outright lie and needs to be addressed.
You may be asking how on earth we got so far behind to begin with. I believe this amounts to the way that KC approached the course. His "teaching" style is to spend half of class time writing an algorithm on the chalkboard that can be found in the textbook and the second half of class performing a trace of the algorithm for a trivial input. This is something that any 1st year CS student should be able to do given any reasonably-sized algorithm and to do this to a class of mainly 3rd and 4th years is ridiculous, pointless, and demeaning. Frequently, KC himself would commit errors while stepping through a problem and would not notice them right away leading to the class desperately trying to get him to see his mistake so that we could move on. This manner of teaching doesn't work for anyone and is something that should be addressed if KC is to keep teaching this course.
The homework assignments were similarly horrific. Sometimes we would be asked to turn the pseudocode of an algorithm into working code and other times we were asked to trace through an algorithm by hand which is an utter waste of time. I have seen homework assignments from other professors who have taught this course in the past and the questions, while difficult and time-consuming, actually help to develop an intuition on when to use algorithms and how to problem solve using algorithms. This is something that I believe also must be addressed if KC is to keep teaching this course.
To wrap things up, KC handled every part of this course from the syllabus, to his teaching style, to his homework in a disastrous manner. He should not be teaching an upper-level class and frankly I don't even know if he should be teaching any class at UVA. This class was a complete waste of my time and I believe that it is an embarrassment to SEAS and to the entire University that they allow someone who is as bad of a teacher as KC Wong is to teach at this prestigious institution. Similarly, this course was so terrible that I am planning on going through Stanford's online Algorithms class over the summer so I am not put at a disadvantage when looking for jobs in the coming years.
No student should even have gotten credit for this course as I don't think that it is possible for one to have learned enough or for enough material to have been covered for any kind of accreditation board to certify it. Furthermore, I think that it is in the University of Virginia's best interest to reevaluate KC Wong's position as SEAS is rising up in the ranks of undergraduate engineering schools.
Thank you for reading this and I tried to not make my response hyperbolic and while it may sound that was it is only because I am severely shocked at the experience I had in this class. I am certain that I am not the only student to raise complaints about this class in these evaluations and I hope they are all taken seriously and correct action is taken.
There are so many issues with this class. The other reviews have touched already on how we didn't cover around half the material, how the method of instruction was non-conducive to learning, and how useless the homework and exams are. I agree wholeheartedly with those criticisms. However, one that no one else has touched on yet is the arbitrary requirement that we use Visual Studio C++ for all programming assignments. There is nothing unique to Visual Studio, and it doesn't make deciphering the book's pseudocode any easier. The professor claims that it will be useful for our careers, but most of us have probably already used IDEs like PyCharm, IntelliJ, or Eclipse anyway. I ignored this rule and used vim, and the graders were none the wiser.
Also, the textbook we used was pretty horrendous. It also wasn't even required (just "recommended"). I don't think you can do well in the class without it, though. Prof. Wong copies from the textbook liberally for nearly all of lecture, and makes mistakes when doing so. You won't be able to figure out where these mistakes are unless you have the book, so you really do need to buy it. The number one annoyance for me about the book is that sometimes it indexes from 0..(n-1), other times 1..n, other times 1..(n-1), etc.—often within the same problem! Since we have to actually implement many of these algorithms in C++, it's up to you to figure out how to convert to 0..n-1 form every time. I plan to buy the MIT Intro. to Algorithms, 3rd Edition textbook over the summer, as it is much more widely respected.
I'm also curious how the person below got an A in the class while taking only two hours or less to do the assignments. Every single one of them took much more than that for me. Maybe the homework was easier in previous semesters, or else the lectures clearer.
For the exams, I want to also emphasize that despite explicitly telling us that any algorithms or equations we needed for the exams would be provided, only around 50% were actually provided. Hope your memorization abilities are better than mine, because it will be difficult to derive them yourself given the way the course is taught.
Prof. Wong is pretty nice in person, but that doesn't get you very far in actually learning anything useful from his class.
Get us started by writing a question!
It looks like you've already submitted a answer for this question! If you'd like, you may edit your original response.
No course sections viewed yet.