Monday, May 6, 2013

Review: Computer Science Programming Basics in Ruby

May 06, 2013 Posted by Unknown , No comments

Disclosure: I received a review copy of this title from O’Reilly

Computer Science Programming Basics in Ruby

Computer Science, more than any other field I know of, poses a difficult balance between theory and practice. It is difficult to understand the theory without having some practical knowledge. It is difficult to teach the practical aspects of Computer Science without a solid foundation in theory. I'm years into my development career and still discovering the true value of CS concepts I was able to mentally retain long enough to sit an exam.

I wanted to review this book for 3 reasons:

1. I am on a mini ruby kick at the moment and am reading/viewing everything I can get my hands on

2. I wanted to see how Computer Science was taught from a non traditional language (C/Java) standpoint

3. I wanted to fill any holes in my knowledge and/or revisit what I've already forgotten

The book is a short read, at 188 pages, yet does an admirable job of providing a basic overview of both the core Ruby programming language and some fundamental computer science concepts. I was particularly impressed with the overviews of some major sorting/searching algorithms and measurement of complexity (Big O Notation). The authors made these topics very accessible which is an impressive feat.

I was admittedly a little disappointed that Ruby was used only because it is a popular modern programming language (as was stated in the book) and not because it provided any deep or novel insights into Computer Science concepts. I don't really know what I was expecting but I think there is an opportunity for a book to be written that delves down into computer science concepts using modern languages – taking the above examples: which Ruby algorithms use binary search, what do they look like, etc.). Clearly that wasn’t the intent of this particular book, and I’ll take the blame for assuming it was, but the title would have been slightly less desirable to me had I known in advance. 

As the book’s title indicates, it focuses on basic concepts so it is probably not meant for seasoned developers. All in all this was an interesting title and I'd recommend it for anyone beginning a Computer Science course or thinking about pursuing one. It won't make you a developer overnight but it will certainly provide insight into the kinds of things you will learn and, by the end of the book, you should be able to write some simple Ruby applications!