Course Announcement

Instructor: Charles Geyer (Ford 356, 5-8511, geyer@umn.edu)
Office Hours: Monday, Wednesday 1:25am–2:15pm

Tao of Programming

Tao is a Chinese character 道 that is often translated way. Its modern pinyin romanization is dào, but we will use the older romanization tao because that is more familiar to western readers, having appeared in the titles of many books.

Like the English word way it has many shades of meaning but it usually means a way of doing things, particularly a way that is the Right Thing in someone's opinion.

Zhuangzi (莊子), an ancient sage, told a story about a cook who carved oxen following tao so cleanly that his knife never got dull. We would like to program like that, to be a wizard or a guru in hacker jargon.

But that takes much time and practice and also insight into taos of programming. That is why good books on the practice of programming, such as,

are more valuable than books about specific details of R or MCMC or whatever. These books teach taos of programming (as do others I could name).

Laozi (老子), the perhaps legendary author of the Tao Te Ching (道德經) wrote

Those who know do not talk.
Those who talk do not know.

知者不言
言者不知

What this says about teaching I will leave to you to figure out. It's really true about computing. All of the most important stuff you have to learn for yourself by doing computing. All I can do is raise consciousness. Nevertheless, the course may degenerate into lecture at some points because we don't know what else to do.

For the last two years I have been forcing students to ask questions. On each reading, we have one or two rounds of questions from students: every student asks one question per round (follow-up questions are allowed but not required). Questions do not have to be about specifics of the reading. They can be anything about statistics and computing.

Tao of R

There is a tao of R. There is also a tao of SAS. They are very different.

Because we are interested in research in statistics, we are interested in research programming, which these days means R. The amazing number of packages on CRAN and BioConductor show the research importance of R.

The best books about the Tao of R are

At the end of this course, each student should be proficient at writing R packages, a lot more proficient than some faculty members of the School of Statistics.

Projects

Perhaps the most important part of the course, will be class projects. Each student will do a moderately large, but not too large, project, producing an R package to do something of interest to the student.

Start thinking about what you want to do for your project now. If you don't have any ideas, talk to the instructor.