We highly recommend to all students starting their adventure with computer science and engineering (also at the Rzeszów University of Technology) a book by Lekh Raj Vermani and Shalini Vermani entitled An elementary approach to design and analysis of algorithms.
Lekh Raj Vermani is a retired Professor of Mathematics from Kurukshetra University, Kurukshetra. After his retirement, he was Visiting Professor/Principal/Director at Jai Prakash Mukand Lal Institute of Technology, Radaur (Yamuna Nagar) and Panipat Institute of Engineering and Technology, Smalkha (Panipat). He held the position of Commonwealth Post-doctoral Fellowship at the University of Exeter, England and was also Visiting Fellow/Scientist/Professor at Tata Institute of Fundamental Research, Bombay; University of Manitoba, Winnipeg, Canada; Techlov Institute of Mathematics, Moscow; Panjab University, Chandigarh; Harish-Chandra Research Institute, Allahabad; Indian Statistical Institute, Delhi; and Himachal Pradesh University, Shimla. He is a Fellow of the National Academy of Sciences, India. He is the author of Lectures in Cohomology of Groups, Elements of Algebraic Coding Theory, An Elementary Approach to Homological Algebra and A Course in Discrete Mathematical Structures – the last one in collaboration with Dr. Shalini Vermani. He obtained his Master degree in Mathematics and his Ph.D. from Kurukshetra University
Shalini Vermani is Associate Professor in Apeejay School of Management, New Delhi in the Department of Information Technology and Operations Management. She has more than 17 years of teaching experience. Her area of interest is Information Security and Cryptography. She has published various papers in national and international journals and has also written a book, A Course on Discrete Mathematical Structures, published by Imperial College Press, London. Dr. Vermani has also reviewed various papers for national and international journals/conferences.
The development of computer science in the ’60s and ’70s of the XX century for many was a big shock especially when the decade of ’80s popularized computers as a common device that can be used in every home even by kids. In 90’s it was clear that there is no point of return and it’s not only important to be familiar with computers and use it without any inhibitions and fears but also make some brave attempts to be an advanced computer user (for example to be a programmer). However, the communication with this machine required not only the knowledge about its interfaces but also some basic (at the beginning) skills in programming. But the programming is only an intermediate stage: there is a need to have good knowledge and skills in computer programming languages and algorithms.
When I was a young student of computer engineering my knowledge about algorithms was very limited. This was mostly caused by the fact that generally, this term was unknown for many of my technical high school teachers; we (I and my colleagues) were aware that computer engineering would create our future, but the access to this enigmatic knowledge was very limited. There were obviously books on algorithms, but after the first contact, most of us were convinced that they are at a very high level which required advanced knowledge in math. Probably this was caused by the fact, that these books were written by those who in the ’60s and ’70s made this above mentioned significant progress. Even during the studies at university, for many of us, the analysis of algorithms and the understanding of how they work was very hard. We had several valuable books, but in most of them we can find only pseudocode of algorithms but there were no detailed examples showing how they exactly work. Thus many times we need to “rediscover” something that after all turned out to be very simple and obvious. However, lately the omnipresence of the Internet had changed this situation and around 15 years ago many young people received the possibility to learn how algorithms work at a very detailed level; step-by-step this caused that now even in the primary school many young pupils have basic knowledge and skills about writing simple algorithms. During this time there were also written many interesting and valuable books on algorithms and their analysis. But there is still a big need to have books that show some important topics (for example in computer science) at basic level with elementary approach. The book entitled An Elementary Approach to Design and Analysis of Algorithms written by Lekh Raj Vermani and Shalini Vermani is an interesting proposal that fills the gaps in libraries for concisely written and student-friendly books about essentials in computer science.
The considered book consists of 19 Chapters. Most of them have almost the same construction: topic description, examples, and exercises. This is a very useful solution and the reader holds in his hand a book that is very easy to be navigated. Obviously the first chapters started with very simple algorithms. In the beginning (Chapter 1) we have the sorting problem. One can say that this is so obvious and well-known problem in computer science that there is no need to say anything more, but let’s note that sorting is still one of the most frequently solved problems in computer systems. Sorting is also very useful to introduce the problem of algorithms performance analysis (complexity). Basing on sorting it’s very easy to explain all necessary details in this topic (Chapter 2) introducing mathematical notations and explaining what exactly means algorithms performance. However, it is not only good to know something about different types of algorithms, but also to know what kind of strategy should be taken into account in order to solve different problems. Thus the backtracking technique (Chapter 3), the divide and conquer approach (Chapter 4), greedy algorithms (Chapter 5) and dynamic programming are shown (Chapter 6). Because, since for many years we know the concept of graphs, a lot of problems have been represented by sets of nodes connected by edges, Chapters 7–11 are devoted to graph algorithms. This is graph search (Chapter 7), spanning trees (Chapter 8), shortest paths (Chapters 9 and 10), and flows in networks (Chapter 11). Then we have (Chapter 12) with polynomials and Fourier transform, string matching (Chapter 13), sorting networks (Chapter 14) and at the end quite short but well enough explained the problem P vs NP in Chapter 15. This set of chapters is enough to show all basics and elementary algorithms that seem to be necessary for the beginning for anyone who starts his/her adventure with computer science. It is obvious that today in computer science we are constantly looking for new algorithms and the good understanding not only, how other algorithms work, but what kind of techniques and solutions can be used to achieve the final target is very helpful.
This book is full of examples and detailed explanations about how different algorithms work. In many books about algorithms one can observe that even if there are some examples, they are usually very simple and given without many important details; here the number of details is impressive. Obviously, sometimes it is very good to (re)discover how considered algorithms work (if someone at the beginning is able to understand the idea of simple analyzed procedures, then it will understand much more), however, many times we need to find only information about one interesting procedure. In this book, the authors show a lot of details with all necessary explanations, required steps, subprocedures and present almost everything with simple but very good figures, graphs and tables. In the preface, the authors wrote that this book is not so advanced as many others and their goal was to present the material at an elementary level. It should be written that they keep this promises. Obviously the readers need to have some elementary knowledge about algebra and graph theory
I recommend this book for anyone who would like to study algorithms, learn a lot about computer science or simply would like to deepen the owned knowledge. Obviously, one can discuss the selection of algorithms, but this is not so important. The most important is that during reading this book we are ensured that from the beginning we are introduced step by step into the fantastic world of algorithms which are the great achievements of mankind, even if some of them were known for centuries. But the development of computer science in the XX century collected them together and create a fantastic part of a science called computer science.
I hope that soon this book will have many translations in different languages because it is worth. The book is written with very simple English and can be understood even by those who are not familiar with the English language. From a technical point of view, it should be emphasized that despite the fact that the book consists of many examples, mathematical formulas and theorems it is very hard to find any mistakes, errors or typos.
Congratulations to the authors!
The review of the book can be also found on:
https://zbmath.org/?q=an%3A06973982
or as attached pdf file.
L. R. Vermani; S. Vermani: An elementary approach to design and analysis of algorithms. Primers in Electronics and Computer Science 4. Hackensack, NJ: World Scientific, (2019).