Unlike some, I do not have a very favorable opinion of this class. I did learn quite a bit. But the bottom-line; the amount of time used was excessive compared to the value of the knowledge gained. So, a highly inefficient learning experience overall. I have a strong CS background. As an undergraduate, I received a 3. 97 GPA for my computer science work and have received an A in every other class in the OMSCS program that I have taken for a grade except for this one. In this class, I received a B. In fact, only 16% of the students in this class received an A, and as can be seen by looking at Course Critique (https://critique. gatech. edu/course. php?id=CS6505), the grade distribution with the current instructor is skewed in a direction generally unfavorable to students. So beware, if you choose to take this course, you are in for a huge amount of work and perhaps a significant amount of stress. In my opinion, it would be perfectly reasonable to choose your specialization such that you could avoid this class. Alas, at the moment that would mean that you specialize in Interactive Intelligence, although there might be other ways to dodge this class while specializing in Robotics or Machine Learning in the future if they expand their algorithms offerings. Anyway, in my opinion, this class isn't going to give you any deep insights about the world; but it will seriously mess up your schedule for the semester. It is a perfectly reasonable choice to choose your specialization specifically so you can avoid this class.
The current instructor, Chris Pryby, has a Ph. D. in mathematics, not in computer science. Not surprisingly, this class has a certain bias towards mathematics. I would say that the way that the class was administered in Fall of 2015 that it is about 80% math and only 20% computer science. Of course, if the instructor were to change, it is perfectly possible for this bias to change as well. To make the point: if you were to choose your undergraduate major based on your desire to complete this class, I would recommend that you major in math rather than computer science. Alas, since most of you have probably finished undergrad, this is a useless point as a practical matter but very important in terms of how you should prepare yourself for success in this class. What is important in this class is not so much your ability to implement any algorithm or concept, but instead to produce mathematical proofs that relate to them.
As a side note. The mathematics in this class is not particularly hard. I had a colleague at work who was a mathematics major before receiving his Ph. D. in bioinformatics assert that the level of mathematics in this course appeared to be at about an undergraduate level when he saw what I was doing as far as the homework. It is not the formal level of mathematics in this class that makes the course hard, it is the way that this mathematics is taught (or more accurately, really not taught in the class) that makes the course hard. Basically, for this class, you either know the mathematics (including proof techniques) already or you are going to have to teach yourself. I would personally put this up as one of my pet peeves about the course. (And full disclosure, I have several such pet peeves). The lectures are sort of computer science oriented and sometimes even interesting when Lance Fortnow was in the picture. But the homework is really all math. And the math in the homework is not anything that is covered in the lectures. So, if you are someone who likes to learn from lecture like I do, you will be at a disadvantage, because you are going to have to teach yourself any undergraduate-level math concepts you are missing from the Internet or from a textbook or whatever on your own. And you had better hope, based on previous experience, that how you setup the problem is sensible, because there will not be any feedback in terms of lecture about how to solve problems UNLESS you try to find a lecture recorded for some other class that covers the same topic, which can be a hit or miss endeavor. Anyway, as a practical matter for those reading this review, here is my advice. Don't watch the lecture and expect it to help you with the homework, the midterm, or the final all that much. Indeed, there is only a limited relationship between the lecture and the things that determine your grade. Instead of focusing too much on the lecture, I would recommend that you focus on the homework problems and consider the lecture but one resource that MIGHT sometimes be useful in figuring out how to solve the cs-themed math problems that are the bread and butter of this course. As often or not, an outside resource will be more valuable to you than the actual lecture. Do not be surprised by this. For example, at the beginning of the class, I would highly recommend a strong focus on the "optional" Sipser textbook in particular. (Oh, and don't be fooled by the syllabus. There is nothing "optional" about the recommended textbooks UNLESS you already own a textbook that is substantial similar. ) In fact, if you are taking CS 6505, why are you even reading this review? You should be reading Sipser.
A note about office hours. In the Fall of 2015, there were two types of office hours. Office hours where lecture was watched together and office hours that covered the homework. As I was taking two classes, I personally did not have time to show up to many "watch together" type office hours. But the few I did go to were not all that useful. But don't get confused. If you find the "watch together" office hours less than useful, don't make the mistake of assuming (like I did early on), that the office hours are a waste of time. In fact, the office hours that go over the homework are pretty much must watch for most people. Indeed, if I were to take the class over again, the first thing I would do when I received the homework is review it and try to complete as much of it as possible before office hours covering that homework is held. Then you will be well-positioned to maximally benefit from office hours and just maybe, have something resembling a normal life. As others have mentioned, it is in office hours that many of the "hints" to the "tricks" that will otherwise end up consuming your entire life are given. Thus, being properly prepared for office hours is often the only efficient means of solving the homework and the way to steal back some free time from this time-sucking course. So, do not make the mistake I did, which is to insist on watching the lectures before attempting the homework. The lectures (which still are not optional) probably will not help you that much with the homework anyway. Just as often, it will be some third-party source of information that is key. I would also argue if you are a visual learner who likes to learn from seeing others work out problems, that Chris Pryby's office hours should not be skipped, since he has a tablet and works out problems. Other TAs often resort to typing out math in chat, which, in my opinion, barely works and is highly inefficient even when it does work. Oh, and if your schedule doesn't allow you to make it to office hours one week? At least in the Fall of 2015, too bad. Office hours are not recorded like they should be in order to give everyone the same access to the same information. People who have time in their schedule for office hours will have an information advantage over those who do not. (And this is especially critical, because while the lectures often aren't that helpful to solving the homework, midterm, or final, the office hours do cover that sort of information. )
Another point. The title of the course Computation, Complexity, and Algorithms. Low and behold, other courses offered at Georgia Tech, but not yet to OMSCS students include Computational Complexity Theory, Design and Analysis of Algorithms, Graph Algorithms, Approximation Algorithms, and Randomized Algorithms. CCA includes all of these topics, albeit on a sort of superficial level. You would think that since all of these topics are covered, that the course would focus heavily on the interrelationships between them. But despite some noises in the lectures about such interconnections, that is far from the focus in the class. No or little knowledge of interconnections between these topics will help you in the homework, midterm, or final. Anyway, my experience in this class was essentially this. At just about the time I start feeling comfortable, maybe even competent, dealing with one area, it is time to move on to the next. So, don't expect to acquire an especially strong foundation or confidence in any of the topics above as a reward for taking this class (although you should have a reasonable introduction). Maybe the exception is computation, but for that, I would credit the excellent Sipser book, much more than this class. Also, the earlier lectures are much better than later lectures.
Anyway, I am nearly done with my rant. As you might infer from the tone, I did not much like this class. My view is that it is too much work for too little return. Something to be endured, not enjoyed. If CCA were a stock, I would sell it short. But that said, if you take this class, you will learn a lot. It is just that you will have to put in a disproportionate amount of work in learning it. (I feel I would have benefitted more from self-study, where I would control the agenda. ) In terms of grading, you can expect low scores that are then generously curved. But in the end, as a practical matter, much of the class is nearly as much of a test of pre-existing knowledge and mathematical skills as anything else, especially when it comes to setting up problems or figuring out the cute "tricks" necessary to get to the end. (And it shouldn't have to be said, but knowing how to setup the problem is probably 50% of the challenge. So focus on that first. ) And while I have seen classes that grade on a curve being well-done, in this case, I believe the curve disguises the fact that the course designers do not have a particularly clear agenda regarding what skills and knowledge they actually expect students to acquire from the class. It is more of, lets test them on a bunch of stuff and see what sticks sort of thing. A curve can (in theory) be the most fair way to grade students; but it can also be a way of concealing flawed course design. In this particular case and for this particular class, I believe it is the latter not the former.
Now, there is a particular sort of person that enjoys this class. And without exception, I believe that what sets those people apart is that they are very well-prepared in terms of mathematics and perhaps in terms of schedule (probably they are only taking one course). As I have said, neither the mathematics nor the insights in the course are all that hard, in retrospect. But what is hard is the amount of material you are expected to cover with inadequate time to cover it systematically and thoroughly due to the lack of a focused and clear learning agenda. For those who come into the course with very solid skills (such that they probably do not even need to take the course, really), then it is a pretty fun problem-solving experience. Maybe it even hits the sweet spot for optimal learning. For everyone else who is going to take this course, I do not believe that you will find this course to be anywhere close to enjoyable or a great use of your time relative to the reward. I certainly did not enjoy the class or feel that it is was a good use of my time. But then again, I am not a math major. Perhaps if I had been one, I would have enjoyed this course too.