Sunday, March 19, 2006

Brave New World

Computer science is a weird field. Its very name is based on a technical object: the computer. Perhaps no other major can make that claim. Some people claim the name is a misnomer. Computer science, by its very name, has the word science. But it's not biology or chemistry or physics, that develop theories and verify by observations.

Although computer science has its foundations in mathematics, it is not purely math either. Computation theory and algorithms are math. However, programming, software engineering, databases, and so forth are all applications of this theory. Indeed, software engineering is as much about social organization as it is about math.

Computer science is a relatively young field. The field itself predates the computer itself. The birth of computer science probably begins at the beginning of the twentieth century, where mathematicians came up with the grand idea that everything could be proved, if we provided rigorous enough rules. Put in modern terms, this means we could write programs to prove all theorems. Godel disproved this, but nevertheless, it lead to people like Von Neumann and Turing to conceive the modern idea of a computer.

The oldest computer science departments can only trace back some forty years. The germ of a computer science department didn't start until the 1960s. By the 1970s, a few more were springing up. The advent of the personal computer gave rise to many computer science departments in the 1980s and onward.

Computer science education, however, hasn't evolved particularly fast. Computer science often teaches its courses much as any other major does. It rarely uses computers to make it work. Ten years ago, you'd find most computer science lectures being taught using chalkboard.

These days, the ubiquity of the laptop and projection units has made it possible for everyone who plans ahead to use Powerpoint (or similar) to present their information. However, anything beyond that, say, interactive software have never really been successful because it added a great deal of work for professors.

While we'd like to believe that most professors devote a great deal of time to teaching, many choose to spend very little time on it. Students that aren't very brilliant start to wear at the patience of normally impatient teachers who complain aloud that students have to work harder, just like they did, to be successful. If a professor could work and think hard, why can't they?

And yet, it's in teaching that most professors are weak. They devote so little time to understanding how people learn, where students have deficiencies. They make brief summaries of chapters, and hope to say the same things year after year after year. I knew one instructor who wouldn't update his SQL notes which were ten years old.

That's part of the problem of teaching in an area that's tied so closely with technology. You have to invest time to keeping up. Yet, many other areas change slowly. Mathematics, physics, biology, chemistry. Even if there are advances in these areas, they are often at such an advanced level that only graduate students have to worry about it.

On the other hand, computer science changes fast enough that even the basics of programming have evolved over the years. We started off with procedural programming, such as Fortran and Pascal, and that evolved to object oriented programming of C++ and Java. That was not an easy transition for many people, even many bright people, who still think procedurally.

Industry always moves quicker. If one company chooses not to adopt a technology, others will. The current fad of industry is web services, Ajax, Web 2.0. And yet, a typical computer science teacher may not be following any of these advances at all, which is sad, because it opens up all sorts of opportunities to write new programs beyond the kinds they write now.

O'Reilly held a session titled Learning 2.0 about changing ways we learn. However, the lessons offered weren't particularly enlightening. From surveys, this O'Reilly group heard that teachers want to create their own books and decide their own content. You can now work with O'Reilly to do just that.

But who do you suppose responded to O'Reilly? Teachers who cared. What about the teacher that walks into lecture and starts rattling off the content off the top of his (or her head)? Yes, there are teachers who think "I have a Ph.D., I don't have to prepare for class since I already know it". There's no one checking on whether they do any advanced preparation.

If you have someone like that, why on earth would they want to invest the time to develop their own material? That takes time! I knew one professor who did decide to write his own notes for his course. He co-taught this with another professor. When that other professor taught the course for the summer, he went back to the standard textbook. It had certainly been revised more often and had far more content than the makeshift book.

So how do we get teachers to learn more about the brave new world? The first step is to create a resource (preferably web) that people can easily find and easily read and takes little to no work to be involved. They can simply read up on other people's ideas, and that alone would work out great.

I believe with a judicious combination of web resources and good teachers, it will eventually be possible to train the next generation of computer scientist and computer technologists that will make them far more capable of handling the problems of tomorrow.

I once sat at a talk by Dave Thomas. Thomas has written two books on Ruby, and is a funny and exciting guy to hear at a lecture. He said we really need to increase the expertise of more people in the computer industry. How do we do that? That's the problem I'm giving some thought to. I don't think the answer lies in creating customized textbooks.

No comments: