gpollice

Archive for the ‘Teaching’ Category

Why is it so hard to find books for a Webware class?

In Computer science, Teaching, Web on May 10, 2012 at 9:06 pm

I just finished teaching Webware at WPI for the fourth time. I seem to get the opportunity to teach it every two years. The course is supposed to give the students a basic understanding of how to build applications that are delivered over the Internet, typically through Web browsers. The course description in the catalog is a little bit out of date, but it covers the main things students should expect to encounter in the course. Each time I’ve tried to teach this course I’ve struggled to find a single book that covers all of the material in the depth I expect my students to be able to handle. Each time, I’ve been unsuccessful.

The first problem that always seems to occur is the fact that books on Web application development are almost always out of date. This occurs more with this course than any other course I know of. The landscape of Web development changes at such a rapid pace that by the time a book is ready—whether it’s a new book or a new edition of an existing book—it’s quite out-of-date. It seems like the only way to keep up-to-date with Web development is to scour the Web for recent developments. If you’re like me and only teach Web development every couple of years, you probably don’t have the time to spend the time required to do this regularly. So, like me, you end up cramming for the information every time you’re going to give the course.

The second problem with finding a book, even if you can find one that’s recent is that so many of the books try to survey the Web development topics rather than go into depth in any of the subjects. If you’re blessed with having really good students, as I am, this becomes a problem. The books are just not something that they’re going to get much out of. The last time I taught the course we didn’t use a book. That didn’t work. Students want a book that presents the material covered in class. They want something they can read and study, all in one place.

The second time I taught the course we used the current volume of Sebesta’s Programming the World Wide Web. Some parts of it were quite good, but not enough to make the book a good fit for my class. Random chapters on PHP, and other topics that the students were never going to use for the class, with reasonably shallow treatment of the topics were reported by the students in their course evaluations as the major negative of the course.

The fact is, that you need material from several sources. The problem is that books are really expensive. This time I thought I’d try a custom textbook. There were three books that I found covering JavaScript (JavaScript by Example), Web site design (Basics of Web Design HTML5 & CSS3), and general HTML and Web topics (Internet & World Wide Web How to Program).  All of these were from the same publisher, Pearson, and they offer the possibility of customizing a text for a class.

I selected the appropriate chapters from each book, submitted my choices, and then found out that two of the books were not available for custom texts. That left me with just Deitel’s Internet & World Wide Web book, the weakest of the three. I have found that most of the Deitel books are rather shallow in their coverage of a topic and are at a level that is much too easy for most of the students I have. However, time was running short so I thought I’d select just a subset of the book that addressed topics I knew I’d cover. Since the Deitel book is a paperback book costing over $120 (with extra cost if you want their on-line chapters), it seemed too expensive for the value of the content.

It turns out that the sixteen chapters that I selected cost $91. At face value, this was a little bit better. However, the whole Deitel book was selling for less than $90 on Amazon. What really sealed the deal for my students buying the book from Amazon was that the custom book ended up getting printed from an old edition, not the current edition that covered HTML5 and CSS3.

I’m still hoping that it will be possible to create a custom text for this course. I may try to get it from more professional publishers like O’Reilly and The Pragmatic Programmers. The books from these publishers were ones that I actually used more than the broader Deitel book. I’ll provide a review of these books in my next post.

Getting ready for testing embedded software for developers

In embedded software, Teaching, testing on January 26, 2011 at 8:57 pm

After a couple of months of reading about embedded systems on-an-off and how to go about testing them, I’m finally done procrastinating and putting together the course (with a whole two months to spare). This should be fun, and a good course that we can build upon. This particular one is specifically for corporate education at WPI. There are companies out there who are really eager to get their developers trained in testing techniques for the systems they’re building. I think it will be fun, and it will also help me improve the standard testing course that I’ve offered a couple of times.

I’ve chosen a couple of good books for this course, which is a graduate-level course. The first is Introduction to Software Testing by Ammann and Offutt. This is a really nice book that covers testing with just enough theory and a lot of practical advice. I think it will appeal to developers quite nicely.

Cover of the text book

Theory

The second book is Test Driven Development for Embedded C by Jim Grenning. This is the book that I’m learning a lot about embedded systems development. Combining this with the previous book should make for a great course. Of course, I need to go back and remember some of the dirty little corners of C and C++, but it should be fun.

Cover of Test Driven Development for Embedded C

Practice

The course will not be simply learning the theory and practice, but putting the knowledge to work by working on projects. Projects make things interesting, but somewhat difficult for a course like this. The students will be practicing software engineers who are already working on embedded code so the challenge will be to try and simulate enough of a real system without the complexity and size of industrial systems. I’m not sure how this will work, but I think it’s possible to make interesting and reasonably challenging problems.

I’ve decided for the first offering to use the Arduino board for the main development hardware. I’d like to incorporate different things like Sun SPOTs and the Neuron Robotics DyIO, but not right now. Maybe these will go into a future offering.

Arduino

The hardware

The other challenge is how I’m going to talk and keep a class interested for four hours at a clip. I’d rather two days a week, but that’s not possible right now. The last time I did a four hour course was one summer teaching foundations of computer science. I bored myself to death.