Showing posts with label text book. Show all posts
Showing posts with label text book. Show all posts

Friday, September 7, 2012

My 19 Days of Python: The Introduction

I recently requested (asked for; begged for) a review copy of O'Reilly's new Think Python book. Over the years, I've toyed with the idea of learning (no, actually learning) how to program in at least one language, but I never could get past a certain point. Usually, it either came down to getting stuck at a particular stage and never being able to progress forward or I just plain ran out of discretionary time and had to pursue more productive activities (write a book).

I've always felt that there should be a book "out there" that would be able to take a non-programmer and successfully lead that person (namely me) to be able to program in a particular language, as opposed to just copying exercises out of a book or from some online source. I've looked at various texts over the past several years but never found one that fit the bill. I had high hopes for V. Anton Spraul's Think Like a Programmer, but ultimately the book failed due to lack of accessibility and ease of use (in spite of the author's comments otherwise, C++ is not an ideal first language for the "learn-at-home-in-your-spare-time" student).

At about the same time I heard about Think Like a Programmer, I discovered Think Python, but Spraul's book arrived at my home first so I reviewed it first. Then Downey's book was delivered by UPS and I started peering into the first page's of his text. I found it refreshing and very honest:
In January 1999 I was preparing to teach an introductory programming class in Java. I had taught it three times and I was getting frustrated. The failure rate in the class was too high and, even for students who succeeded, the overall level of achievement was too low.

One of the problems I saw was the books. They were too big, with too much unnecessary detail about Java, and not enough high-level guidance about how to program. And they all suffered from the trap door effect: they would start out easy, proceed gradually, and then somewhere around Chapter 5 the bottom would fall out. The students would get too much new material, too fast, and I would spend the rest of the semester picking up the pieces.
Yes! In a nutshell, that's my experience with just about every book I have ever used to try to learn to program. I work with software developers every day and in listening to their conversations, they seem to be a group of people who are just "wired" to know how to learn to program. I believe that people have certain natural aptitudes that allow them to acquire specific skill sets with some relative ease, while those who are wired differently struggle and ultimately fail to acquire the same skill sets, even when generating great effort to learn them.

I don't think I'm wired to be a programmer. I don't "think like a programmer." I think like a writer, which is what I'm good at. However, I'd like to expand my areas of interest and competency and stretch myself a bit so that I could learn how to program. Not only do I need to successfully learn a programming language and to write programs in that language, I need to learn to "think" in a way that allows me to program. If Spraul's book isn't written to teach me to "think like a programmer," then maybe Downey's book is.

Certainly Python is a more "accessible" language, since it doesn't need to be compiled. Linux (specifically Ubuntu 12.04) has a Python interpreter available, so all I need to do is open a shell, type "python" at the prompt, and away I go.

Downey's goal in writing his book (the book actually has a number of contributors who have become involved thanks to the fact that it was originally released under the GNU Free Documentation License, so Downey isn't the sole creator of this product) is to provide a resource to assist students, both in class and learn-on-your-own, to "learn to program and think, at least a little bit, like a computer scientist."

It seems as if Downey should have the background to enable him to accomplish his task:
Allen Downey is an Associate Professor of Computer Science at the Olin College of Engineering. He has taught computer science at Wellesley College, Colby College and U.C. Berkeley. He has a Ph.D. in Computer Science from U.C. Berkeley and Master’s and Bachelor’s degrees from MIT.
But how can I tell if his book really does what Downey says it does? The answer is to use it to learn how to program in Python.

Here's what occurred to me.

The book has nineteen chapters. Each chapter is relatively short, maybe ten to fifteen pages per chapter, including glossary section and exercises. That doesn't seem like a lot of material, but looking at the table of contents, the book seems fairly comprehensive.

I could kill two birds with one stone: thoroughly read and practice with the book so I could write a good review, and learn to "think like a programmer" (at least marginally) and as a result, learn to program in Python. I could take a chapter a day (I'll explain this part in a minute) and see if, by the end of the book, I was where I wanted to be, not as a programming expert, but as a fairly competent "hobbyist."

So that's what I'll do. I'll write a blog post after I successfully read each chapter and perform the exercises it requires. That's nineteen blog posts or "my 19 days of Python" using Downey's book. Nineteen "chapters" on my blog to write a book review. What more could a publisher want?

As I go through each chapter, I'll post my responses, successes, frustrations, not only with the book but with the process of learning to change my thinking to adapt to "thinking Python." This is just the introduction. My next post in this series will be on my experiences with "Chapter 1: The Way of the Program."

Is Think Python really a different book? Is it the "magic text" that will teach a non-programmer like me to program? That's what I'm going to find out. That's what we'll find out together.

Wish me luck and come along for the ride.

Monday, August 13, 2012

Guide to TCP/IP, Fourth Edition

Well, look what I found the other day.

I was the "junior" person on the team that collaborated to make this edition of the classic Guide to TCP/IP possible. Ed Tittel has been with this book since the beginning and Jeff Carrell is the unsurpassed wizard of all things networking. I was lucky to even be able to contribute to this book in some small way and to work with these fine people (I haven't forgotten that Laura Chappell's name is on the cover, but truth be told, she hasn't contributed a single word to this book since the first edition).

Because this is a text book, the publisher usually wants to give "cover credit" only to people who are well-known in the field. My name only comes after a "with" on the cover (and no mention in the author's section for the book in Amazon), but it's still a feather in my cap to have my name see the light of day at all. I'm very appreciative of the authors and editors involved for allowing this kudo to go to me.

I'm really excited to see this book being published next month and I believe it represents one of my best efforts in recent years. To find out more and to order the book, go to Amazon.com (clickable link).

Thursday, February 5, 2009

Head First Algebra: A Learner's Guide to Algebra

Authors: Tracey Pilone and Dan Pilone Format: Paperback, 559 pages. Publisher: O'Reilly Media, Inc. (January 2, 2009) ISBN-10: 0596514867 ISBN-13: 978-0596514860 Update: I owe an apology to O'Reilly and anyone who has read this review so far. I rather consistently referred to the "Head First" series as the "Head Start" series. The mistake was completely mine and I apologize. No, this isn't a book that directly maps to FOSS or Linux or programming...exactly. On the other hand, the paths to programming in open and closed source usually move through this realm, so I think it is relevant. Picture yourself a would-be programmer who likes to code in your spare time, but you've got a problem. To really become any good at what you'd like to be your profession, there are math requirements, and you think math is almost as interesting as watching wind erode granite. Fortunately for you, O'Reilly and the Head First series has come to your rescue. They created "Head First Algebra". I agreed to have a look at this book first as a rough cut via Safari. Unfortunately, it presented me with a major drawback relative to my learning style; I could't write in the book. OK, I admit it. I really need to be able to write notes in my textbooks, highlight key sentences and paragraphs (which can include a sizable percentage of the book) and otherwise fold, spindle, and mutilate the thing. As hard as I tried, I just couldn't stick with it when the learning source was online. It doesn't help that I'm kind of "math-phobic" on top of everything else. Actually, that's not entirely true. I do just fine with standard math such as adding, subtracting, multiplying, and dividing. It's all that other pesky stuff, which includes "algebra", that sets off my panic attacks. I've actually taken and passed an algebra class in the dim past, but my grades weren't exactly stellar (compared to the much higher grades I got in all of my other classes), so when I saw that Head First was offering an algebra book, I figured I had a second chance. I hate admitting defeat or anything near it. This book seemed to be my way to victory. When the paperback version of the book arrived on my doorstep, I sharpened a brand new number 2 pencil, got out a fresh highlighter, and got to work. I had gone through the first chapter in Safari, so I knew that the material would lull me into a false sense of confidence. The authors present "solving for unknowns" as simple adding/subtracting/multiplying/dividing problems (which they are), which I can do. Of course, that's the point; to bring the reader in slowly and build up their confidence. After all, if you are going to use a Head First book to learn algebra, it means that the more standard (read: dry as Gobi desert sand) texts on the subject have not been entirely successful. Actually, I'm the perfect person to review this book. If I like it, then the target audience will adore it. If I were an algebra teacher or skilled at more advanced forms of math, I probably couldn't "reduce" my thinking down to who the book is written for. It would be like an Olympic swimmer trying to review a book written to teach pre-schoolers how to paddle in a kiddie pool. All that said, I had my usual "issues" with the Head First series. The series is written for people (young and old alike) who are just a tad bit ADHD (or more) and need to have a lot of stimulus coming in more or less constantly to stay engaged. If you could teach algebra from the perspective of a first-person shooter, that would be ideal for this population, but that's hard to do in a static book. The Head First series does its best to cater to this audience (and as an aside, I just sent my rather distractable son a copy of "Head First JavaScript", and I'm dying to see what he thinks of it) and I think high school students everywhere should pay homage to O'Reilly for creating Head First. By page 14, you can see where the book is going, even though the problems are still easy enough to do in your head, and for the math-phobic, that's when the sweat will start to form on your palms. Time to confront your fears and remember, this isn't an "ordinary" algebra book. You end up seeing a nice, neat example of "isolating the variable". Seems rather benign, actually. Why do I remember this stuff being hard? Oh wait! I'm still in the first chapter. By the end of the first chapter, the reader will start to get the feeling that they might really be successful at this stuff. Naturally, there's the spectre of more complicated problems to face, but the saving grace of the book isn't just the book. Unless your high school math teacher is using this as their official text book, you will probably use this book on its own. I'd really recommend it for a "summer reading book" you go through before formally taking algebra in the fall. The book (sans class) lets you do what the classroom experience doesn't allow. You can go at your own pace. Parents reading what I just wrote will shudder in fear, calculating that their child's voluntary "pace" at learning algebra will be slightly slower than the flow of the nearest glacier (although, with "global warming" effects, that could end up being a bad analogy). Fear not. I remember thinking to myself during my own rather painful "algebra experience" that I wished I had just a little more time to "get it". I was working my sorry tail off going to class, doing homework until the wee hours, and taking tutoring, both from the instructor (nice guy, really) and outside tutoring. If effort was the ultimate measure of how well I'd do in the class, I should have gotten an A+. Alas, things like aptitude and time have something to do with it as well. That means, the existence of this book in your room or on your bookshelf isn't enough to teach you algebra, but putting significant and regular effort into it, will. Without the artificial constraints of the classroom environment, learning algebra using this book is very "do-able", even if you don't like math. Is "Head First Algebra" a fool proof method of learning algebra for everyone? Depends. First off, you have to at least be able to tolerate the format of the Head First series (and if you already love the format, then no worries for you). Then, you have to use it. I found it a little easier to go through this book than others in the series for some reason. I think that I need to learn programming in a way that doesn't lend itself to how Head First teaches, but Head First is really the way I need to learn algebra. Will wonders never cease. I don't think I'd recommend this book to be the only exposure to algebra for you (or your kids). Almost nobody learns algebra because it's fun and entertaining (OK, there are a few people out there like that, but the rest of the "herd" thinks you're weird). We learn algebra, at least formally, because we have to. I can see the ideal use for this book as I described it a few paragraphs back. Take this book and work through it over the summer, before you have to actually take a "for real" algebra class, with a teacher, other students, homework, and (ugh) tests. Play with the book and the topic, but don't be lazy. Really use it regularly so the learning remains fresh. Then, after finishing the last pages and with all that dancing in your head, enter your high school or college algebra class. Your learning curve won't be nearly as steep and you'll be "desensitized" to the fear-inducing elements of algebra. You won't be fighting memory-destroying anxiety as you're working on learning. I hear that No Starch is coming out with The Manga Guide to Calculus next summer. I wonder...

Wednesday, February 4, 2009

Review: The Manga Guide to Databases

Authors: Mana Takahashi (Author) and Shoko Azuma (Illustrator) Format: Paperback, 224 pages Publisher: No Starch Press; Ill edition (January 28, 2009) ISBN-10: 1593271905 ISBN-13: 978-1593271909 Even though I specifically requested this book from No Starch for review, I never really expected it to be a...comic book. OK, that's not quite right, as purists will no doubt remind me. Manga isn't quite the same thing as an American comic book, but it's close enough from my point of view. I rather had expected the book to work along the lines of O'Reilly's Head First series, where technical topics are presented in text but with lots of "hyperactive" photos, graphics, arrows, and the like. The Databases book is presented as a straight manga publication and was originally published as part of a Manga Guide series in Japan in 2004. To clarify my perceptions, I actually emailed Bill Pollock at No Starch to get a clearer understanding of how this book and book series is supposed to work. Once Bill straightened me out, I was ready to proceed. Like any other manga, this one tells a story, and the story has an underlying theme. Historically, "children's" entertainment in Japan has carried a moral or ethical message, with the main characters sometimes appearing to give small lessons in cooperation, listening to parents, and so on. This manga's message isn't a moral one so much as an educational one. The underlying message is what databases are, how they're designed and how they work. The book addresses the reader who has never been exposed to any information about databases before. In fact, the first chapter is "What is a Database?" Poor Princess Ruruna has quite a problem, you see. Her parents, the King and Queen, are away and have left her in charge of the kingdom's massive fruit selling business. Unfortunately, the system she's using to keep track of her data is woefully inadequate to the task. Enter Tico the Database Fairy. I know it sounds silly, at least the way I'm describing it, but that's how the story opens. Pretty much up until page 10, the tale is presented in a typical manga fashion. The "problem" in terms of why Princess Ruruna and the Kingdom of Kod (I don't make these names up) need a database, starts to become apparent on page 11. The actual lesson in Chapter 1 starts on page 16, and that's where the book becomes more like I had originally expected. The main characters are used as "props" or "actors" to present the lesson of the chapter, in this case, what the basic problem is and how a database can be applied to create a solution. There's a short summary at the end of the chapter, then it's on to "What is a Relational Database". Subsequent chapters present a series of exercises after the main content with the answer key at the end, so this is very much a teaching book. But who does it teach and what can the students expect to learn? The intended audience (I checked, because it doesn't explicitly state this in the book's front matter) is likely high school and early university students (not exactly a shock, given the book's format). The book isn't a detailed text but rather a ground level introductory guide into the care and feeding of databases. You won't learn the SQL language, though there is a chapter in the book devoted to SQL. The idea of the book is to teach someone who knows nothing about what a database is and to give them a clue; a relatively detailed clue. The manga presentation will make it more appealing to a younger reader, or someone older who enjoys the novelty, to learn topics that can otherwise be pretty dry. If you are a "serious" student, you'll either think the book is frivolous or cute (or both), but will balk at being seen reading it in public. If you're the target audience, you won't give a rip and will probably brag about it. In fact, you're friends will probably think it's incredibly cool. Don't laugh (OK, laugh...there are funny bits in the book). This series is hugely popular in Japan, and No Starch is planning on marketing this as a series. While the books have already been authored in Japanese and been translated, No Starch is doing some re-translation and a technical review to verify that the content will really teach what it's supposed to. I mentioned the young and young-at-heart as far as the book's audience before, but it is suitable for the straight up adult who secretly likes manga and anime, and needs to get a primer on a topic that they may never have really understood before. Even people that manage databases for a living sometimes have a hard time explaining to the uninitiated exactly what a "relational database" is. Oh, this isn't just a textbook disguised as manga. Just for giggles, a bit of drama has been offered in the form of a romantic triangle. Not to worry. There's not too much "mushy stuff" there to get in the way of the book's main focus, but there is enough to keep it lightly entertaining. There is also a happy ending, which is to be expected. The book has a small appendix, which is unexpected, presenting "Frequently Used SQL Statements" as well as an index, so you can actually use it somewhat as a reference. Speaking of which, there is also a references page citing no less than nine sources, so the authors didn't whip this book up out of their heads. The primary author Mana Takahashi, is a university graduate and a technical writer on the subjects of Java, C, and XML (non-manga books), so she has the background to be authoritative. Back in the day, I used to collect comic books, though more in the vein of Spider-Man and Green Lantern, and when my kids were young, we watched the more popular anime series on Cartoon Network. I've even seen the occasional manga in my time, so I'm not completely unfamiliar with the art form. I've seen comic books, both mainstream and speciality publications, that have educated as well as entertained, but I must admit, I was taken a bit by surprise by this one. I don't know if it's really right for me, but I think it's right for the aforementioned young/young-at-heart audience, who has a need to understand the very basics of databases as concept and design. It won't do more than that, but it doesn't have to. There are plenty of books available that can carry on after this book's last page has been read. The book is written as a fantasy (Princesses, Kingdoms, Fairies), which isn't exactly what I'd go for, but it does the job it's supposed to do. Personally though, I would have preferred a few space ships, a couple of aliens, and some super-powered fight scenes. Even a couple of explosions would have been welcome. But that's just me, of course.