With its flexibility for programming both small and large projects, Scala is an ideal language for teaching beginning programming. Yet there are no textbooks on Scala currently available for the CS1/CS2 levels. Introduction to the Art of Programming Using Scala presents many concepts from CS1 and CS2 using a modern, JVM-based language that works well for both programming in the small and programming in the large. The book progresses from true programming in the small to more significant projects later, leveraging the full benefits of object orientation. It first focuses on fundamental problem solving and programming in the small using the REPL and scripting environments. It covers basic logic and problem decomposition and explains how to use GUIs and graphics in programs. The text then illustrates the benefits of object-oriented design and presents a large collection of basic data structures showing different implementations of key ADTs along with more atypical data structures. It also introduces multithreading and networking to provide further motivating examples. By using Scala as the language for both CS1 and CS2 topics, this textbook gives students an easy entry into programming small projects as well as a firm foundation for taking on larger-scale projects. Many student and instructor resources are available at www.programmingusingscala.net
The emergence of the Scala programming language over the past few years is due to some of its peculiar features. Scala leverages proven design patterns from lesser-known programming languages like Erlang, and mixes a functional programming style with object-oriented language elements. As such, it has all the prerequisites for becoming a major programming language in the near future.
Scala is not easy to learn. Mastering its rather esoteric features (patterns and function call conventions, among others) presents a steep learning curve. There are already some excellent books on the language [1,2], but none until now has considered Scala to be a potential candidate for a first programming language for complete newcomers. This book fills that gap.
Structured over 36 main chapters and two additional background chapters, the book gives a thorough and slow-paced introduction to programming in Scala. The author goes well beyond the simple presentation of the language, its libraries, and its typical programming patterns by also introducing the fundamental programming techniques encountered in any undergraduate computer science programming class. As expected from such an introductory book, the topics include the design and implementation of elementary data structures such as sets, linked lists, trees, and heaps, as well as fundamental programming algorithms such as sorting, searching, parsing, and string manipulation.
A chapter-by-chapter review would be impossible given the volume of the book, but the range of the content can be suggested with a description of the two main parts. The first part of the book (chapters 1 to 15) covers the basic elements of the Scala programming language and the settings of a development environment. In this part, the common programming idioms (variables, conditional and nonconditional execution, iterations, and so on) are gently introduced. The extensive details, exercises, and illustrations are very well chosen and provide valuable support for the novice reader. The second part of the book (chapters 16 to 36) delves into complex and advanced projects in multitasking, concurrency, actor models, and various additional data structures. Two different audiences can thus read this book. Novice readers should read the book from cover to cover. Readers with some other programming experience can start with the second part and just skim the first part if needed.
The book comes with supplementary online materials, ranging from code excerpts and reading materials to full-fledged multimedia presentations and practical software development setups.
I enjoyed and learned many Scala subtleties from this book, and I recommend it to all readers interested in this exciting programming language. Seasoned programmers can use it to learn the details of Scala, while newcomers can use it as an alternative to starting with Java or Python. In summary, the author has provided a unique and timely pedagogical tool that is highly recommended to a large reader audience.
More reviews about this item:
Amazon
Online Computing Reviews Service
Claudiu Popescu
This textbook for college programming courses is obviously aimed at students in computing, but it would also be useful for students in other fields since it is about problem solving. Software designers can also use it as a reference for many programming techniques.
The book is big. With over 900 pages of dense text, it contains a lot of information. Each of the 36 chapters includes exercises and projects.
The author uses the Scala language to demonstrate the art of programming. Scala can be compared with Java, and the author includes an appendix introducing Java for Scala programmers. However, Scala offers some improvements over Java, including the fact that Scala can be used as a command line, which makes it easy for beginners.
In the first part, a number of chapters describe elements of the Scala language, such as data types and instructions. Chapters on elements, graphics drawing, algorithms for sorting, and recursion for graphical user interfaces (GUIs) follow.
The second part covers object-oriented programming in depth. Projects are presented in Eclipse, along with instructions on how to install and use Eclipse. The next set of chapters provides information about concurrent programming and data structures (stacks, queues, lists, trees, and heaps). A more theoretical chapter presents regular expressions and grammars, while another explores Scala actors as a good way to solve concurrency problems.
The book is mainly just text and program snippets, with only a few images. The font is small. However, the content is presented at a level the intended student audience will find easy to understand.
The author covers most of the programming areas. The 36 chapters are a mix of theoretical aspects and practical programming techniques. Sometimes the order of the chapters is unexpected. For example, chapters on data structure are scattered throughout the book.
Overall, this is great textbook, containing a huge amount of useful information for students.
Online Computing Reviews Service
Access critical reviews of Computing literature here