While there have been several easy classes that I’ve taken, all in the 100, 200, and 300 levels, I’ve never taken a class that’s quite as hard as ICS 311. It is not simple in any way, shape or form; the class itself is designed to test aspiring programmers or programmers who truly are serious about getting into a very prestigious computer sciences career. The class itself is described as being a barrier for most, and as being a complete nightmare for the inexperienced. However, it is not impossible; there are many students out there who have succeeded, and while it has been designed to test both the least and most experienced, it is in fact doable.
Some of the biggest hurdles involves the understanding of algorithms, proofs, and even some of the simplest of concepts for programming. It is not just enough to look at the CLRS textbook; you must practice the problem, think about various approaches to reach a designated solution or solutions, and most importantly explain how and why you reached that solution. I will not say I’m an experienced programmer or even the brightest of students; I’ve only worked with Java, C, and C++ for roughly a year; but I am at least a little if not sort of familiar with the topics discussed. My problem is just dealing with the proofs, choking up over the quizzes, and failing to provide a sufficient answer for the regular assignments and in-class assignments alike.
I do have an idea on how to properly study for the class, however. It is not just reading through Khan Academy articles, re-watching screencasts, and taking notes only to miss vital steps. If anything, you should look at things from the perspective of other people. If you can receive an explanation on the problem and look at things from the perspective of pseudocode as opposed to actual code, it will be a little bit easier. Additionally, you should ask for help whenever you can. That does not mean that the professor or TA should give you the answer straight up; but rather the professor or TA should give proper guidance on answering the question(s). Finally, practice does not make perfect, but it certainly gets you close. The more you practice problems that are related to the section, the easier it will be.
This class requires a lot of patience and, obviously, a load of studying; ICS 311 is not easy by any means, and it should not be as it is a 300-level class. But through perseverance, practice, tutoring, and studying, you should not have any problems at all. Just remember to ask questions when you are in a bind, work in groups to better improve your understanding, and most importantly, DO NOT let the class get to you. While you should not take this class for granted, remember that you should also care for your own mental health as well. Give the class your all, but do not succumb to the pressure.