Computer Science Programming Basics In Ruby
Great intro to basics!
by JimSchubert from Seattle WA on 6/7/2013
Pros: Accurate, Well-written, Helpful examples, Easy to understand, Concise
Best Uses: Student, Novice
Describe Yourself: Developer
I read this book as part of the O’Reilly blogger program. I have been a professional software engineer since 2008, and I thought that I wouldn’t gain much from this book from a technical perspective and just provide some creative feedback for future readers. I also regularly enjoy teaching others about technology and different aspects of development. I was very impressed with the authors’ presentation of material.
If you have a degree in computer science, this book is most likely not for you. The actual material discusses things like what an array is and how to use one. It also provides examples of how to use branching conditional structures, objects, files, etc; like the title says, these are the basics.
What impressed me the most was the use of diagrams throughout the book. As engineers we regularly try to cut corners by going light on documentation, which is a practice that plagues the field and turns our science into more of an art. What is even more difficult than writing documentation or learning materials for other engineers? Writing for non-engineers. This book does an excellent job of explaining concepts that most authors take for granted. For example, I think you would have difficulty finding an introductory level book that doesn’t explain arrays with a picture of adjacent boxes to represent indexes; as engineers we assume that new engineers may have issues with data structures, but we regularly take control flow for granted. I think we assume that control flow can be really explained by requesting it to directions, but this simplification may not work for everyone. This book presents control flow by providing an application example, then displaying the logic of the example in a flowchart. I love that. I think this aspect alone would easily reduce some of the intimidation a new student to the computer science field may have.
I would recommend this book to students or anyone considering a career move into software or web development. I would also personally be interested on reading more by this team of authors on advanced topics.