I just finished the AP Computer Science course in high school and since my schoo
ID: 651753 • Letter: I
Question
I just finished the AP Computer Science course in high school and since my school does not have any further classes, I was thinking about getting a textbook and continuing my study. APCS goes through Big O, Arrays + ArrayLists, Recursion, Linked Lists, a rough overview of some other data structures and some sorting and searching algorithms (all in Java).
I will start Calculus in school next year (if that helps to determine math level).
Since I was thinking about participating in CS tournaments, I thought it would be useful to learn more about algorithms and data structures.
I was looking at two textbooks, The Algorithm Design Manual by Steven S Skiena and Introduction to Algorithms by Cormen et. al. I was wondering which one, if any of these, would best fit my situation.
Explanation / Answer
Personally, I recommend either Algorithms by Dasgupta, Papadimitriou, and Vazirani, or The Algorithm Design Manual by Skiena.
The Algorithm Design Manual is super-practical and full of excellent pragmatic advice, useful stories, and is well-written and easy to read. If you want to help get ready for programming contests, I strongly recommend that one.
I think Dasgupta has a better introduction from the perspective of learning the conceptual material, the theory, the proofs underneath the algorithms, etc. So, if you want to learn the theory, I recommend Dasgupta.
You won't go wrong with either; they are both outstanding.
Personally, I think they are better than Cormen. I learned from Cormen, and it's a perfectly fine book, but it can be a bit dense in places and a bit challenging to learn from, so it wouldn't be my first recommendation. Still, it's a reasonable contender and you wouldn't be led astray by it; I just think the others are better.