1
$\begingroup$

I'm a student at a liberal arts college who has recently been taking classes at a tech school due to our schools cross-exchange program.

I did not do well last semester, so I have spent the summer educating myself. I learned C by doing all of the exercises in the previous book I read.

Now I'm doing something that a professor told me to do in a tech school, study algorithms in C. So, I bought a textbook Algorithms in C. But this textbook is asking me questions about algorithms I don't fully grasp how to answer, so I cracked open Intro to Algorithms 3rd edition and resolved to get through Chapter 3 at least so I know how to analyze algorithms properly.

Here is the thing, I have been reading textbooks all summer, this is the third book I have gotten to, and it's difficult. It's difficult because, I don't understand how to problem solve the questions in the book until I get to the answer key on the internet.

This isn't good, and I need a method or a way of seeing this properly. Without the online answers guide, I would have never solved most of the questions in chapter 1 and 2. I understand them now, but I'd rather be able to get through them on my own.

Another question: Is it important to do every exercise in this book?

$\endgroup$
3
$\begingroup$

While it isn't necessary to do every exercise in a book, it is important to be able to do every exercise in the book.

Similarly, while it isn't necessary to write every algorithm, it is necessary to be able to write every algorithm.

But learning is another issue. Reading alone isn't enough to learn something. I think you already understand that. You need practice with what you've read to make sure that you have a deep and long lasting understanding of the topic. So, as you've already discovered, you need to do a lot of well chosen exercises.

But even that isn't enough.

You need feedback on your attempts. You need someone to look at your work and tell you where you have done the right thing and where you need improvement.

Reinforcement and feedback are the key to learning.

I'm not sure where you will be able to find this feedback. That is the real value of taking courses - the feedback is built in. Unfortunately not every course gives enough feedback, of course. If it is just grades, it isn't enough. You need it pointed out where and why something didn't work so that you don't build bad habits. (Reinforcement without feedback can be counterproductive).

Perhaps there is a professor who would be willing to look at your work. Perhaps you have another more advanced student available. Some people create study groups to give feedback to each other. Even an online "buddy" who can evaluate what you've tried.

And note, also, that having the answers available isn't really sufficient feedback until you learn how to find the misconceptions that led you to the wrong answer. It is little misconceptions that can throw you off and someone giving good feedback can help you get the insight to avoid them.

Find someone.

As for making it easier, only reinforcement, feedback, and time will do that.

$\endgroup$
  • $\begingroup$ Yare yare daze.. . What have I gotten myself into? LOL $\endgroup$ – Matthew_J_Barnes Jul 27 at 22:21
1
$\begingroup$

I would add to Buffy's completely wonderful answer only this: do not fret too much if you don't always get the questions on your own, particularly in a self-learning context.

Many of these algorithms took brilliant people years to come up with, and while they have now been well established and boiled down to their essentials, do not be fooled; they represent deep thinking and deep mathematical truths. If it takes some time to absorb them, that does not mean that you are doing poorly.

Think of your study as gardening, and your consistent efforts will be rewarded over time. There is no requirement that you learn everything deeply in your first pass. Just be patient with yourself, and learn your lessons well.

$\endgroup$
  • $\begingroup$ You. . . Are going to make a magnificent father to a very smart child one day, Ben. $\endgroup$ – Matthew_J_Barnes Jul 28 at 3:19
0
$\begingroup$

Let me offer you another perspective. Since you study at a liberal arts college, I presume you are not majoring in computer science. So, the book you are talking about (Cormen's) isn't really a simple one. It is intended for CS students with a certain background that you might lack.

There is not much profit in trundling through a difficult book if you realize how solve an exercise only after seeing an actual solution. Yes, perhaps, you might be able to learn some algorithms by heart, but it looks like algorithms are not becoming a part of your natural thinking process. When you see a solution, you can understand it; but you can't come up with your own ideas since this "algorithmic thinking" is not a part of your normal daily cognitive process.

Both "Algorithms and C" and "Intro to Algorithms" are detailed books in part intended to serve as reference material. The latter book also contains a fair bit of maths. I don't think you are supposed to memorize every single procedure described there: it should be enough to know what is doable, what is the general idea of a solution, and how complex a particular algorithm is.

I understand that you need to prepare for an exam, but if you had more time, I'd say that the "proper" way of understanding algorithms is to pick up a much simpler book (such as Grokking Algorithms) and try solving simpler problems entirely on your own. If you face an easy task, you should be able to figure out how to solve it, and then you'll be able to appreciate other, more efficient ways of achieving the same result. Comparing your solution with a more efficient solution is more helpful for self-improvement than just checking the answers, I believe.

$\endgroup$
  • $\begingroup$ No, I'm majoring in Computer Science, but our program is a joke. They send us over to the tech school for most of our classes and we end up doing VERY badly. . .Technically the students over there do badly too, but we all pass because of the curve. $\endgroup$ – Matthew_J_Barnes Jul 29 at 16:57
  • $\begingroup$ But I grok, you have a good point. $\endgroup$ – Matthew_J_Barnes Jul 29 at 16:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.