# Concise Notes on Data Structures and Algorithms Ruby Edition by Christopher Fox

This book covers the usual topics in an introductory survey of algorithms and data structures, but it does so in well under 160 pages. There are relatively few examples and no large case studies. Code is presented in Ruby. Every chapter has review questions with answers, and a set of exercises. There is also a glossary at the end. The book (and versions of it using other programming languages) has been used successfully for several years to teach introductory algorithms and data structures at James Madison University. Many students have commented appreciatively regarding its brevity, clarity, and low cost. At JMU, instructors are required to teach algorithms and data structures in a language different from the one used in introductory courses, which happens to be Java. Ideally, a language for algorithms and data structures would be easy to learn (so as to leave time for learning algorithms and data structures), support data abstraction well, provide a good development environment, and engage students. Although Ruby is large and therefore a challenge to learn, a subset of it adequate for the needs of an introductory algorithms and data structures course can be learned fairly easily. Ruby is a pure object-oriented language so it does a good job supporting data abstraction. Unfortunately, Ruby is dynamically typed and does not provide assertions, so it is a bit dicey for novice programmers. On the other hand, it has a command line interpreter, a good Eclipse plug-in, and a very nice light-weight testing framework, all of which help students a great deal. Thanks to the popularity of Ruby on Rails and the apparent ease of writing code in an interpreted dynamically typed language, students find it interesting and fun to program in. Overall, Ruby is a good choice for teaching algorithms and data structure in a language new to students. In this book the readers will read What are Data Structures and Algorithms? Structure of the book, The Ruby Programming Language, Review Questions, Exercise, Review Question Answers, Built-in Types, Simple and structures types, Types in Ruby, Symbol: A simple types in Ruby, Range: A structured type in Ruby, Exercises.

Introduction to Arrays, Varieties of Arrays, Arrays in Ruby, Review Questions, Assertions, Types of Assertions, Assertions and Abstract Data Types, Using Assertions, Assertions in Ruby, Introduction to Containers, Varieties of Containers, A Container Taxonomy, Interfaces in Ruby, Introduction to Stacks, The stack ADT, The Stack Interface, Using Stacks â€“ An Example, Contiguous Implementation of the Stack ADT, Linked Implementation of the Stack ADT, Summary and conclusion, Introduction to Queues, The Queue ADT, The Queue Interface, Using Queues- An example, Contiguous implementation of the Queue ADT, Linked Implementation of the Queue ADT, Summary and conclusion, Introduction to Stacks and Recursion, Balanced Brackets, Infix, Prefix, and Postfix expressions, Tail Recursive Algorithms, Introduction to Collections, Iteration Design Alternatives, The Iterator Design Pattern, Iteration in Ruby, Collections, Iterators and containers, Lists, The List ADT, The List Interface, An example of using lists, Contiguous implementation of the List ADT, Linked implementation of the List ADT, Implementing Lists in Ruby, Analyzing Algorithms, Introduction, Measuring the Amount of Work Done, The size of the input, Which operations to count, Best, worst, and average case complexity, Function growth rates, Definitions and notation, Establishing the order of growth of a function, Applying orders of Growth, Basic sorting algorithms, Bubble sort, Selection sort, Insertion sort, Shell sort, Recurrences, Setting up recurrences, Solving recurrences, Merge sort and Quicksort, Improvement to Quicksort, Trees, Heaps and Heap sort, Basic Terminology, Binary Trees, The Binary tree ADT, Contiguous implementation of Binary Trees, Linked implementation of Binary Trees, Binary Search and Binary Search Trees, Introduction to Sets, The Set ADT, The Set interface, Linked implementation of sets, Introduction to maps, The map ADT, Contiguous implementation of the map ADT, Linked implementation of the map ADT, Hashing, The Hashing problem, Hash functions, Collision resolution schemes, Hashed collections, Hash tablets, Hash sets, Hash maps, Implementing Hashed collections in Ruby, Graphs, Directed and Undirected Graphs, Basic Terminology, The Graph ADT, The Graph Class, Contiguous implementation of the Graph ADT, Linked implementation of the Graph ADT, Graph Algorithms, Graph Algorithms in Ruby, Searching Graphs, Depth-First Search, Breadth-First Search, Paths in a Graph, Connected Graphs and Spanning Trees and much more.

To downloadÂ this book,Â please click the link below:

Click here to download Concise Notes on Data Structures and Algorithms Ruby Edition