Fourth year software engineering student here. I had George Karakostas as well. To do reasonably well in this course you really need to take a lot of time to think about the algorithms, go through the pseudocode, understand each line, and maybe even try to code some of the main ones yourself (merge sort and binary trees for example).
This isn't the sort of class you can get through by kind of understanding the material. I remember many people failed on the first midterm because of this. So for sorting algorithms, make sure that you can take a list of numbers and sort them, by hand, using each algorithm. For the graph algorithms, make sure you can go through a graph and compute the shortest paths to each node.
So to answer your questions more directly, his tests are difficult to do well on, but if you do as I suggested, and can go through all the algorithms by hand, you should at least pass them, as that's usually about half of the marks. The rest of the marks will be more difficult, as they might ask you to write pseudocode for a modification of an algorithm, or explain how you would use algorithms to solve a specific problem.
The assignments can be quite difficult, but you have time to do those. This course is one of the only courses that I bought the textbook for, and I ended up using it again for later courses, so I think it's worth it. Make sure you go to class as well, because it starts off with some pretty basic algorithms and data structures, like arrays and insertion sort, but when he jumps into merge sort and then later graphs it picks up really quickly, and if you don't fully grasp the basics you won't be able to follow him.
Also, there are good videos online explaining the different algorithms that might be useful.
Insertion Sort: youtube.com/watch?v=DFG-XuyPYUQ
It might help to go through videos like this before you learn about them in lecture.
Here is a bit of motivation for the course, youtube.com/watch?v=kPRA0W1kECg
|