The Magical Guide to Algorithm Analysis and Design by Rosina S Khan - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Preface

I have named this guide as “The Magical Guide to Algorithm Analysis and Design”

because the very process of writing down a set of instructions in the form of pseudocodes before feeding them into program structures and executing them successfully to get program outputs is very magical indeed. It all starts with the human thinking process and via pseudocodes or algorithms, converting them into programs, including their analysis and design, is nothing short of magic and therefore, the title of this guide.

Analysis is the measurement of the quality of your design. Just like you use your sense of taste to check your cooking, you should get into the habit of using algorithm analysis to justify design decisions when you write an algorithm or a computer program. This is a necessary step to reach the next level in mastering the art of programming.

I have integrated the content of this book from various resources including several google searches. The main titles I have used for this guide are the following: 1) Lecture Notes for Data Structures and Algorithms by John Bullinaria 2) A Handout on Introduction to Data Structures and Algorithms by IDOL

3) Lecture Notes on Algorithm Analysis and Design by Herbert Edelsbrunner 4) A Handout on Introduction to Algorithms by Jon Kleinberg and Eva Tardos 5) A Common-Sense Guide to Data Structures and Algorithms by Jay Wengrow, 2nd Edition, The Pragmatic Programmers

The guide, authored by me, is meant for undergraduate students in the field of Computer Science and Engineering or an equivalent program.

This book is organized into 11 chapters.

In Chapter 1, we introduce the concept of Algorithms and the fundamental questions about algorithms. [1]

Chapter 2 portrays the concept of Data Structures and their varieties such as arrays, linked lists, stacks, and queues. Also, abstract data type and the advantages of abstract data trees are explained. [2, 5]

8

In Chapter 3, we formally define an algorithm, introduce time and space complexities, the types of analyses of algorithms, and mathematical notations. [2, 5]

Chapter 4 depicts searching algorithms such as linear search and binary search. [1]

In Chapter 5, we discuss the concept of trees both quadtrees and binary trees. [1]

Chapter 6 focuses on binary search trees- how to build and search them, how to sort using them, how to delete nodes from them, and we introduce B-trees. [1]

Chapter 7 deals with the various operations on binary heap trees. [1]

The next chapter, Chapter 8 concentrates on the various sorting techniques such as, Bubble sort, Insertion sort, Selection sort, Merge sort, Quick sort, and Heap sort and their algorithmic complexities as well. [2, 5]

Chapter 9 goes on to explain graphs: the basic concepts, terminology used, representations, operations (Depth-First Search and Breadth First Search) and traversals. [2]

Chapter 10 talks about the concepts of spanning tree and minimum spanning tree and their applications, and also, takes into account graph algorithms such as Kruskal’s algorithm and Prim’s algorithm based on the above concepts. [2, 5]

Chapter 11 is concerned with the theoretical aspects of various Algorithm Design Techniques such as, Divide and Conquer, Backtracking, Dynamic Programming and Greedy Methods. [2, 3, 4, 5]

At the end of the guide, I cater to further free resources, which you will find both valuable and enjoyable.