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. Introduction to Programming and Problem-Solving Using Scala is designed to be used in first semester college classrooms to teach students beginning programming with Scala. The book focuses on the key topics students need to know in an introductory course, while also highlighting the features that make Scala a great programming language to learn.

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 a 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 2|38 pages

Scala Basics

chapter 3|22 pages


chapter 4|28 pages


chapter 5|28 pages

Recursion for Iteration

chapter 6|38 pages

Arrays and Lists in Scala

chapter 7|32 pages

Type Basics and Argument Passing

chapter 8|30 pages


chapter 9|22 pages

Text Files

chapter 10|20 pages

Case Classes

chapter 11|56 pages


chapter 12|70 pages

Graphics and Advanced ScalaFX

chapter 13|36 pages

Sorting and Searching

chapter 14|20 pages


chapter 15|24 pages


chapter 16|44 pages


chapter 17|4 pages

Wrapping Up