# A beginner book on algorithms

I am a tenth grader. I currently learnt about sorting algorithms in java in school. I started with the book "Algorithmic Mathematics" so as learn about algorithms mathematically. I know very little calculus(just started limits) and thus, I had difficulty following it knowing that I am not mature enough to read it .Thus, I want a book that is light on calculus and has good theory on algorithms and some discrete math.

• Introduction to Algorithms (CLRS) is always a good reference. If you find this too mathematically oriented, you can also checkout Algorithms in Java/C++ by Sedgewick. Jul 26, 2021 at 17:07
• Will that be hard on calculus(for CLRS) as I see it is an undergraduate course? Jul 27, 2021 at 10:42

A gentle but rigorous introduction would be Algorithm Design by Tardos and Kleinberg. It covers all the necessary topics, and discusses the ideas and intuitions behind an algorithm before introducing it. Unlike CLRS, you don't need to "pick and choose" chapters to read as a beginner; instead, you can just follow through the chapters since they are structured in sequential order for a proper course in algorithms.

Should you need additional exercises or a different perspective, I've found the books Algorithms by Papadimitriou, Dasgupta, and Vazirani as well as Algorithm Design and Applications by Goodrich and Tamassia helpful.

N.B.: In most universities, typically an algorithms course (where you learn about topics like greedy algorithms, dynamic programming, graph algorithms, amortized analysis, and NP-completeness, etc.) comes after a data structures course (where you learn introductory notions of algorithm analysis, basic data structures such as queues, stacks, BST/balanced BST, and DFS/BFS, etc). The way I see it, the first course is usually not needed, as its contents can easily be baked into the course on algorithm design (i.e. the second course). The textbooks I reference above are the ones typically used for the second course, although they also cover any useful material from the first course, should they be required (notably missing is advanced data structures, e.g. balanced BST).

• I've often heard that you need a year to learn how to program with some confidence: the "Programming" course and then the "Data Structures" course. This more or less checks with my experience teaching. After you've got a clear idea of programming, you are ready to dig into designing algorithms and learn more convoluted ones. Sure, some people need less coaching. Jul 30, 2021 at 2:05

A (tough) introduction is Jeff Erickson's "Algorithms". It is available as PDF for free.

If you want to learn about how to program (how to put together the above to create useful applications), consider Downey's "Think Python" (be sure to get the second edition, as it is written for Python 3, the current version). Also a free PDF.

Much of algorithms is mathematics, just not the standard school/undergraduate fare. Perhaps you'd need to take a peek at some discrete math and something extra, search for William Chen's lecture notes. He wrote a large collection of them, covering from introductory material to somewhat advanced topics.

The above are just my personal favourites, you'd have to find what suits you most. Fortunately this is part of the computing curricula, looking for introductory courses will net you loads of lecture notes, exercises and whatnot.

Although it is not an introduction for beginners, knowledge of the existence Knuth's work on fundamental algorithms is important for a beginning Computer Scientist. One day in the future they will need to consult a copy. So for completeness, and for your future as a computer scientist put this on your "wish list":

The Art of Computer Programming, Volumes 1-4A Boxed Set. Third Edition (Reading, Massachusetts: Addison-Wesley, 2011), 3168pp. ISBN 978-0-321-75104-1, 0-321-75104-3

For Visual understanding and practical implementation, you can go with

1.Algorithms In a Nutshell (O'Reilly)

For problem-solving and deep diving in concepts, You can check this out

1.Introduction to the Design and Analysis of Algorithms By Anany Levitin