Praise for the first edition:

"The well-written, comprehensive book…[is] aiming to become a de facto reference for the language and its features and capabilities. The pace is appropriate for beginners; programming concepts are introduced progressively through a range of examples and then used as tools for building applications in various domains, including sophisticated data structures and algorithms…Highly recommended. Students of all levels, faculty, and professionals/practitioners. 
D. Papamichail, University of Miami in CHOICE Magazine


Mark Lewis’ Introduction to the Art of Programming Using Scala was the first textbook to use Scala for introductory CS courses. Fully revised and expanded, the new edition of this popular text has been divided into two books. Object-Orientation, Abstraction, and Data Structures Using Scala, Second Edition is intended to be used as a textbook for a second or third semester course in Computer Science.

The Scala programming language provides powerful constructs for expressing both object orientation and abstraction. This book provides students with these tools of object orientation to help them structure solutions to larger, more complex problems, and to expand on their knowledge of abstraction so that they can make their code more powerful and flexible. The book also illustrates key concepts through the creation of data structures, showing how data structures can be written, and the strengths and weaknesses of each one. Libraries that provide the functionality needed to do real programming are also explored in the text, including GUIs, multithreading, and networking.

The book is filled with end-of-chapter projects and exercises, and the authors have also posted a number of different supplements on the book website. Video lectures for each chapter in the book are also available on YouTube. The videos show construction of code from the ground up and this type of "live coding" is invaluable for learning to program, as it allows students into the mind of a more experienced programmer, where they can see the thought processes associated with the development of the code.

About the Authors

Mark Lewis is an Associate Professor at Trinity University. He teaches a number of different courses, spanning from first semester introductory courses to advanced seminars. His research interests included simulations and modeling, programming languages, and numerical modeling of rings around planets with nearby moons. 

Lisa Lacher is an Assistant Professor at the University of Houston, Clear Lake with over 25 years of professional software development experience. She teaches a number of different courses spanning from first semester introductory courses to graduate level courses. Her research interests include Computer Science Education, Agile Software Development, Human Computer Interaction and Usability Engineering, as well as Measurement and Empirical Software Engineering.

chapter 1|50 pages

Scala Language Basics

chapter 3|34 pages

Details of Object-Orientation in Scala

chapter 4|34 pages

Abstraction and Polymorphism

chapter 5|36 pages

GUIs and Graphics

chapter 6|28 pages

Other Collection Types

chapter 7|30 pages

Stacks and Queues

chapter 8|60 pages

Multithreading and Concurrency

chapter 10|46 pages

Stream I/O and XML

chapter 11|36 pages


chapter 12|26 pages

Linked Lists

chapter 13|18 pages

Priority Queues

chapter 14|12 pages


chapter 15|32 pages


chapter 16|26 pages


chapter 17|20 pages

Regular Expressions and Context-Free Parsers

chapter 18|12 pages

Binary Heaps

chapter 19|18 pages

Direct Access Binary Files

chapter 20|18 pages

Spatial Trees

chapter 21|22 pages

Augmenting Trees

chapter 22|16 pages

Hash Tables