Interactive and Media Programming


Posted by Thomas Sutton on June 27, 2006

As I’ve mentioned a few times, I’m hoping to work on some materials for computer science education this semester. The gist of my current plans is a core of basic computer science material (very basic data structures and algorithms) backed up by a range of individual and small group projects. I hope to provide a wide enough range of projects to ensure that most students will find something engaging enough that they learn (even in spite of their wanting only to use the Internet).

I’m currently anticipate designing projects using some, if not all, of the following pieces of software:
Haskore
A computer music system based on Haskell.
Pan (or Pan# or one of the several variations on the theme)
A functional graphical processing language similar to Haskell.
Pivotal
A document centred presentation of Haskell.
FunWorlds
An interactive 3D animation package in, you guessed it, Haskell.
You may have noticed a trend in the projects above: they all use, or are closely related to, the Haskell programming language. This is for a number of reasons:
  1. I like functional programming, in general, and Haskell, in particular.
  2. I don’t like the languages usually taught to students (Java, VisualBasic, etc.)
  3. I think that a different, more fundamental, approach might help (supported, I think, by the experiences of teachers using SICP in high schools in the U.S.).

We’ll see how things pan out. If possible, I’d like to integrate some of the above packages into a single whole. Haskore and one of the portable Haskell variants of Pan, for example, might be integrated with Pivotal to give a relatively simple environment for interactive, multi-media Haskell programming. Haskore, in particular, could benefit extraordinarily from such an integration: the student be able to “code”, visualise and listen to their musical compositions from the same program.

This post was published on June 27, 2006 and last modified on January 26, 2024. It is tagged with: education, teaching, programming, projects.