Reddit reviews Foundations of Computer Science: C Edition (Principles of Computer Science Series)
We found 3 Reddit comments about Foundations of Computer Science: C Edition (Principles of Computer Science Series). Here are the top ones, ranked by their Reddit score.
Used Book in Good Condition
The book I learned with
It's old, but still the best C language DSA book.
Here's another by Alfred Aho and co.. It's more of a general programming book, but covers most of the introductory DSA topics, and does it well. Brilliant man and a great teacher.
> Elle repose sur le dos de quatre éléphants qui sont eux-mêmes sur le dos d'une tortue géante qui se promène dans le cosmos.
>
Pas le contraire? https://www.amazon.com/Foundations-Computer-Science-Principles/dp/0716782847/ref=sr_1_1?ie=UTF8&qid=1465989941&sr=8-1&keywords=foundation+of+computer+science
(En passant, le texte de ce livre est disponible légalement et gratuitement sur le site d'un des auteurs: http://infolab.stanford.edu/~ullman/focs.html. C'est un des meilleurs livres de CS que je connaisse.)
You can come back to it later, yes. Why though? You'll need them "now", won't you? I mean, you're going through the book (Skiena's) now, not later. Isn't that right? If you learn it now, you will go through the book better equiped to get its message.
And, besides, it isn't that difficult. It's not trivial by any means. You can try some alternative resources.
I'm not sure why you're interested in deferring this to later. Personally, I believe having seen how proofs of correctness are somewhat done is way more worth it than seeing the algorithms themselves, although some algorithms are pretty educational (like quicksort and also binary search for example). Because even though you won't prove programs correct in practice, knowing how a proof might be devised helps you in writing programs that are easy to prove, and those have to be simple. The whole idea of structured programming that Dijkstra had in mind was to help with this. It's way more intuitive to reason about "while (i < 10) { <do something> }" than a bunch of goto's. In the while-loop case, you can clearly see that upon termination, i >= 10 is true for example. And you can also clearly derive some properties about the body of the loop inductively by analyzing previous iterations.
A lot of good readable code techniques can be put in terms of easy to prove code. Like small functions that do very little, are very cohesive, and work collaboratively. Same for objects. It's way easier to prove correct a bunch of small pieces that work together by some simple means of combination, than a huge big thing.
Good luck.