Looping for poets

When I was an undergrad at Harvard there was a one semester course that gave a broad survey of physics to non-majors. The instructors knew their students generally didn’t have a high level of mathematical preparation, and they also knew they needed to make things fun, because students were generally taking this as a requirement, not out of love for the subject.

The course was nicknamed, somewhat derisively, as “Physics for Poets”, since it was essentially trying to teach a highly mathematical field without actually using any math. So the question arises, are all such courses doomed to superficiality and irrelevance, or is there something good there?

Today some of us faculty at NYU were discussing something vaguely similar: Is there a good way to introduce principles of computer science to non-majors who have no prior background in CS?

We came to the conclusion that there isn’t one way, but there might be many ways. Computer science contains quite a few key concepts. To name just a few: looping, conditionals, variables, procedures, inheritance, computational complexity, recursion. The list goes on.

And college students have many and varied interests. To name just a few: Art, photography, music, sports, cinema, politics, literature, dance, poetry, economics, theater, journalism. The list goes on.

For any given interest a student might have, there is a way to teach a corresponding concept in computer science. Consider, for example, looping. Post-processing of photographs requires looping through pixels, music, poetry and dance require looping through rhythmic patterns, and so on. If you understand a field well enough, you can generally find a motivation for the use of any computer science topic in that field.

Of course to turn this insight into proper course design for a given student interest is far from easy. It requires real work and preparation on the part of an educator who loves both that subject and computer science.

But hey, isn’t that why we are here?