lnishan / awesome-competitive-programming

:gem: A curated list of awesome Competitive Programming, Algorithm and Data Structure resources
http://codeforces.com/blog/entry/23054
Creative Commons Attribution 4.0 International
12.61k stars 2.57k forks source link

I added a new book that I worked on over the past few years. I wanted… #116

Closed dan1982code closed 3 years ago

dan1982code commented 3 years ago

… to write a data structs/algs book, but to do it using competitive programming problems. It's not a comprehensive IOI/ICPC bootcamp like other books already listed here, but I hoped to complement those books with a book that moves more slowly and helps would-be competitors get started with both data structs/algs and competitive programming. It's been received well by past IOI participants. I hope it can be listed here in whatever way makes sense. Thank you!

lnishan commented 3 years ago

Hello there,

I appreciate the PR, and sorry it took so long for me to get stuff back on track.

I hope you don't mind, but I generally take a conservative stance towards self-recommendations.

Some questions:

  1. What is this book geared towards? Is it meant to be a piece of complementary material to a regular algorithm textbook?
  2. I quickly read through the first chapter on Hash tables. It's interesting to me that hash table is put in front, and I don't see any previous sections on time complexities. To me, I also feel that it's slightly important to go into a bit more details on hash function selection, collision resolution and load factors. For example, this fundamentally affects the efficiency of std::unordered_map.
dan1982code commented 3 years ago

Hi Jasmine,

:) I'd prefer not being the one to recommend it, of course... I'd just like to do what I can to get my work out to the people that may benefit from it.

  1. It's an algorithms/DS textbook that uses competitive programming puzzles as the motivation/context for why we want to learn algorithms/DS.

There's a review here: https://www.redgreencode.com/book-review-algorithmic-thinking-a-problem-based-introduction/

  1. The time complexity (big O) material is in an appendix: it's something I hoped the reader had passing familiarity with, but I added the appendix in case not. I agree about collisions and load factors for hash tables, and some of this is outlined in the chapter... but my goal was intuitive understanding over mathematical understanding. (I've tried to be as rigorous as possible within this constraint.)

I'd be happy to send you a copy of the book or to discuss further! I know this all takes time, though, so no worries if not. Please feel free to include/exclude as needed.

Thank you, Dan

lnishan commented 3 years ago

Thanks for the thorough response!

I'd be happy to send you a copy of the book or to discuss further!

I was thinking about this. If you could send me a few chapters, that would be great.

For me, I've seen plenty of introductory tutorials on basic topics. Please forgive me that I tend to look into them rather extensively. The general issue I have with other "awesome lists" is they tend to be too exhaustive. I do want to make this list a curated one, meaning that each item on the list is significant and "awesome" in their own way. With that said, I do find your content layout refreshing, with you demonstrating the use of hash tables with an intuition-based approach.

dan1982code commented 3 years ago

Hi Jasmine -- +1 to the curation. I expect nothing less as the quality of your resources here is very high.

Could you private message/email me with your email address? I have a pdf copy of the book for you to evaluate :)

Thank you, Dan

lnishan commented 3 years ago

Thanks!

Please send it to jasmine (dot) chen (dot) cs (at) gmail.com (trying to avoid scrapers)

lnishan commented 3 years ago

I reviewed the book over the past week.

And it is a good one :)
The problem-based approach and the lesser stringent description of algorithms and data structures made it pretty refreshing and easy to read.

lnishan commented 3 years ago

And Tim Roughgarden for the foreword!?

--> Big fan of professor Roughgarden here. I've watched his online courses when I was a student. Loved his lectures.

dan1982code commented 3 years ago

Thank you, Jasmine! You got exactly what I was going for :) we already have hard-core algorithms books and hard-core competitive programming books. I hope my approach complements what we already have.

I've read many of Dr. Roughgarden's books and he was kind enough to call on me to provide feedback for his Algorithms Illuminated book series. His foreword of my book will always serve as a reminder of how much he has taught me and how much more there is to learn.