hello-algo/docs-en/chapter_preface/about_the_book.md
2023-12-22 00:01:05 +08:00

4.3 KiB

comments
true

0.1   The Book

The aim of this project is to create an open source, free, novice-friendly introductory tutorial on data structures and algorithms.

  • Animated graphs are used throughout the book to structure the knowledge of data structures and algorithms in a way that is clear and easy to understand with a smooth learning curve.
  • The source code of the algorithms can be run with a single click, supporting Java, C++, Python, Go, JS, TS, C#, Swift, Rust, Dart, Zig and other languages.
  • Readers are encouraged to help each other and make progress in the chapter discussion forums, and questions and comments can usually be answered within two days.

0.1.1   Target Readers

If you are a beginner to algorithms, have never touched an algorithm before, or already have some experience brushing up on data structures and algorithms, and have a vague understanding of data structures and algorithms, repeatedly jumping sideways between what you can and can't do, then this book is just for you!

If you have already accumulated a certain amount of questions and are familiar with most of the question types, then this book can help you review and organize the algorithm knowledge system, and the repository source code can be used as a "brushing tool library" or "algorithm dictionary".

If you are an algorithm expert, we look forward to receiving your valuable suggestions or participate in the creation together.

!!! success "precondition"

You will need to have at least a basic knowledge of programming in any language and be able to read and write simple code.

0.1.2   Content Structure

The main contents of the book are shown in the Figure 0-1 .

  • Complexity Analysis: dimensions and methods of evaluation of data structures and algorithms. Methods of deriving time complexity, space complexity, common types, examples, etc.
  • Data Structures: basic data types, classification methods of data structures. Definition, advantages and disadvantages, common operations, common types, typical applications, implementation methods of data structures such as arrays, linked lists, stacks, queues, hash tables, trees, heaps, graphs, etc.
  • Algorithms: definitions, advantages and disadvantages, efficiency, application scenarios, solution steps, sample topics of search, sorting algorithms, divide and conquer, backtracking algorithms, dynamic programming, greedy algorithms, and more.

Hello Algo content structure{ class="animation-figure" }

Figure 0-1   Hello Algo content structure

0.1.3   Acknowledgements

During the creation of this book, I received help from many people, including but not limited to:

  • Thank you to my mentor at the company, Dr. Shih Lee, for encouraging me to "get moving" during one of our conversations, which strengthened my resolve to write this book.
  • I would like to thank my girlfriend Bubbles for being the first reader of this book, and for making many valuable suggestions from the perspective of an algorithm whiz, making this book more suitable for newbies.
  • Thanks to Tengbao, Qibao, and Feibao for coming up with a creative name for this book that evokes fond memories of writing the first line of code "Hello World!".
  • Thanks to Sutong for designing the beautiful cover and logo for this book and patiently revising it many times under my OCD.
  • Thanks to @squidfunk for writing layout suggestions and for developing the open source documentation theme Material-for-MkDocs.

During the writing process, I read many textbooks and articles on data structures and algorithms. These works provide excellent models for this book and ensure the accuracy and quality of its contents. I would like to thank all my teachers and predecessors for their outstanding contributions!

This book promotes a hands-on approach to learning, and in this respect is heavily inspired by "Hands-On Learning for Depth". I highly recommend this excellent book to all readers.

A heartfelt thank you to my parents, it is your constant support and encouragement that gives me the opportunity to do this fun-filled thing.