This practically-focused textbook presents a concise tutorial on data structures and algorithms using the object-functional language Scala. The material builds upon the foundation established in the title Programming with Scala: Language Exploration by the same author, which can be treated as a companion text for those less familiar with Scala.
Topics and features: discusses data structures and algorithms in the form of design patterns; covers key topics on arrays, lists, stacks, queues, hash tables, binary trees, sorting, searching, and graphs; describes examples of complete and running applications for each topic; presents a functional approach to implementations for data structures and algorithms (excepting arrays); provides numerous challenge exercises (with solutions), encouraging the reader to take existing solutions and improve upon them; offers insights from the authors extensive industrial experience; includes a glossary, and an appendix supplying an overview of discrete mathematics.
Highlighting the techniques and skills necessary to quickly derive solutions to applied problems, this accessible text will prove invaluable to time-pressured students and professional software engineers.
1 Foundational Components |
|
1 | (18) |
|
|
2 | (4) |
|
|
6 | (2) |
|
1.3 Applied Techniques for Efficient Computation |
|
|
8 | (3) |
|
|
8 | (2) |
|
|
10 | (1) |
|
|
11 | (5) |
|
|
16 | (3) |
2 Fundamental Algorithms |
|
19 | (8) |
|
|
19 | (2) |
|
2.2 Decimal to Binary Conversion |
|
|
21 | (1) |
|
|
22 | (3) |
|
|
25 | (2) |
3 Arrays |
|
27 | (8) |
|
|
28 | (1) |
|
3.2 Typical Implementation |
|
|
29 | (3) |
|
|
32 | (1) |
|
|
32 | (3) |
4 Lists |
|
35 | (10) |
|
|
36 | (1) |
|
4.2 Typical Implementation |
|
|
36 | (4) |
|
|
40 | (1) |
|
|
41 | (4) |
5 Stacks |
|
45 | (6) |
|
|
45 | (1) |
|
5.2 Typical Implementation |
|
|
45 | (3) |
|
|
48 | (1) |
|
|
48 | (3) |
6 Queues |
|
51 | (6) |
|
|
51 | (1) |
|
6.2 Typical Implementation |
|
|
52 | (3) |
|
|
55 | (1) |
|
|
56 | (1) |
7 Hash Tables |
|
57 | (10) |
|
7.1 Structure and Algorithm |
|
|
57 | (1) |
|
7.2 Typical Implementation |
|
|
58 | (8) |
|
|
66 | (1) |
|
|
66 | (1) |
8 Binary Trees |
|
67 | (10) |
|
8.1 Structure and Algorithms |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
8.2 Typical Implementation |
|
|
68 | (5) |
|
|
73 | (1) |
|
|
73 | (4) |
9 Sorting |
|
77 | (14) |
|
|
77 | (2) |
|
|
77 | (1) |
|
9.1.2 Typical Implementation |
|
|
78 | (1) |
|
|
79 | (2) |
|
|
79 | (1) |
|
9.2.2 Typical Implementation |
|
|
80 | (1) |
|
|
81 | (3) |
|
|
81 | (1) |
|
9.3.2 Typical Implementation |
|
|
82 | (2) |
|
|
84 | (3) |
|
|
84 | (1) |
|
9.4.2 Typical Implementation |
|
|
84 | (3) |
|
|
87 | (2) |
|
|
87 | (1) |
|
9.5.2 Typical Implementation |
|
|
87 | (2) |
|
|
89 | (1) |
|
|
90 | (1) |
10 Searching |
|
91 | (10) |
|
|
92 | (4) |
|
10.2 Typical Implementation |
|
|
96 | (4) |
|
|
100 | (1) |
|
|
100 | (1) |
11 Graphs |
|
101 | (20) |
|
11.1 Structure and Algorithms |
|
|
101 | (1) |
|
11.2 Typical Implementation |
|
|
102 | (3) |
|
|
105 | (1) |
|
|
105 | (2) |
|
11.5 Dijkstra's Shortest Path Algorithm |
|
|
107 | (14) |
A Solutions for Selected Exercises |
|
121 | (20) |
|
|
121 | (1) |
|
|
122 | (3) |
|
|
125 | (1) |
|
|
126 | (1) |
|
|
127 | (4) |
|
|
131 | (5) |
|
|
136 | (1) |
|
|
136 | (5) |
B Review of Discrete Mathematical Topics |
|
141 | (10) |
|
|
141 | (1) |
|
B.2 Floor and Ceiling Functions |
|
|
142 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
143 | (1) |
|
|
144 | (3) |
|
|
147 | (2) |
|
|
149 | (2) |
Index |
|
151 | |
Bhim P. Upadhyaya is a certified enterprise architect, application architect, software engineer, Java and JEE developer, and big data and Scala enthusiast. In addition to his professional experience as a software architect working for more than 15 companies in the USA, he has more than half a decade of university teaching and research experience, including research work at the worlds largest (non-profit) organization, the United Nations. He has also served as a visiting scholar at the School of Information Technology and Electrical Engineering (ITEE) in the University of Queensland (Brisbane, Australia). He is the founder of EqualInformation, LLC (Sunnyvale, CA, USA), a company that focuses on data synthesis and visualization, web application design and development, enterprise architecture, and integration solutions. He has a master's degree in Software Management, a master's degree in Computer Science, a graduate certificate in Enterprise Architecture, and a bachelor's degree in Electrical and Electronic Engineering, with a specialization in Communications Engineering.
His other publications include the Springer textbook Programming with Scala: Language Exploration.