Summer 2007 Research with Janet Davis:
Media Computation in CSC 151

This document provides an overview of my project with students in summer 2007 and my expectations of those students.

Research areas

My main research area is human-computer interaction, and I will bring some aspects of this into the project (see below). This project is focused on computer science education, and in particular, the teaching of programming language and algorithmic concepts at the introductory level.

The project

The media computation approach to CS1 (introductory computer science) has been shown to attract a broader range of students, improve student performance, and improve student retention of material.  In the media computation approach, student work focuses on the manipulation of media, particularly images and sound.  Samuel Rebelsky and I plan to revise the curriculum of CSC151 by marrying the media computation approach with the functional programming paradigm currently used at Grinnell. In addition to the desirable outcomes listed above, we hypothesize that the approach will improve student learning of higher-order programming concepts, in which functions are applied to other functions and can produce functions as results.  These concepts are key to the functional paradigm.

Happily, an open source graphics editor, the GIMP, uses a variant of the functional programming language Scheme, called Script-Fu, as its scripting language.  Unfortunately, published work on Script-Fu deemphasizes the functional paradigm, and Script-Fu lacks some key features that are likely to be useful to novices.

In Summer 2006, Sam Rebelsky and his students began to address these issues by developing a library to better support higher-order programming in the GIMP.  In the fall, each section of CSC151 included a two-week unit using the GIMP to teach higher-order programming; we will expand these units somewhat in the spring.  Next year, we plan to use GIMP as a motivating application from the beginning of the course.  Over the summer, we will be developing new curricular materials (readings and laboratory exercises) for this new approach.  We also need to bring Script-Fu to a state where it can be used by novices without excessive difficulty.

I hope to have students contribute in two main ways: (1) developing supporting code for laboratory exercises, and (2) improving the usability of Script-Fu. The latter contribution will include improved precondition checking for Script-Fu (to provide better error messages) and improvements to the Script-Fu console (possibly integrating DrScheme with the GIMP).

Students working on this project will code in both C and Scheme. (However, CSC 201 is not a prerequisite.) Students will also need thorough understanding of higher-order programming (that is, writing functions that take functions as parameters or return functions as results), but may do so through focused student in the early weeks of the project or beforehand.  Students will also conduct informal usability tests to assess the current and improved usability of Script-Fu; I will provide instruction and guidance here. Experience with Photoshop or the GIMP is a plus.

Students will work in a team of 2-3. Because Sam Rebelsky and I are working jointly on this project, you can expect to get some guidance from him as well as me and to occasionally work with his students.

Approximate schedule

Much of this schedule follows the official divisional schedule for summer research. I will certainly understand if a student accepts a position with me and later chooses to take a more attractive position elsewhere. In that case, I will notify students on my mailing list.  

Our summer schedule may be adjusted by up to a week or so.


Following SamR's example, I have very high expectations of my summer research students. I will expect my summer students to begin their work in the spring and continue it into the fall (and perhaps beyond). By applying for summer research you are agreeing to meet these expectations. You are unlikely to receive explicit credit or compensation for work in the spring and fall.

Although I expect to be around on a regular basis, I will also be setting aside significant chunks of time for my own explorations of future research directions unrelated to this project. Thus, I will expect you to be able to do many things without my immediate guidance, by yourself or with other students.


Topic preparation
You will be expected to begin your background research during the spring.  In particular, you must identify at least four papers on related projects. Sources to consider include the ACM Digial Library (particularly proceedings of the SIGCSE and SIGGRAPH conferences, and perhaps the conference on LISP and Functional Programming). You are also encouraged to use the Web and, once you've identified potentially useful resources, to consult with the librarians about using Science Citations.
Skill preparation
If your project will require a programming language (e.g., C), data language (e.g., HTML), library (e.g., sockets), or application (e.g., the GIMP) that you do not yet know, you are expected to begin studying it. You need not master it, but should begin to develop some familiarity.


During the summer, you are expected to work full time on the project: 40-50 hours per week for ten weeks. This work will include scheduled daily group meetings and collaborative work time (e.g., pair programming or team design sessions). Conducting usability studies may require occasional evening or weekend work, depending on participants' schedules. In short, your schedule will be flexible, but not arbitrarily so.
Topic preparation
For the first week of summer research, you will continue your preparation from the spring, developing a survey of "the state of the art" in whatever project you've decided to undertake. You should prepare a short survey paper. On the first day of the second week, you'll give a public presentation of your work.
Core research
For the next eight weeks of the summer, you will work on your project, using what you've learned during preparation for guidance. Some of this time may be spent continuing to develop skills.
For the last week of the summer (and, preferably, as you do your work), you will write a five-to-ten page paper describign your work and placing it in the context of related work. Your paper should meet the highest standards of writing at Grinnell. Students working as part of a group need prepare only one paper. You will probably be required to submit a version of this paper to a conference or journal. (Sam Rebelsky and I may provide significant assistance in developing the submitted version, in which case we will be listed as co-authors.)

Fall and Beyond

Poster presentation
You will create a poster describing your work and present it at the Grinnell Science Poster Seminar (typically during Parents' Weekend).
Internal public presentation
You will give a 25- or 50-minute presentation on your work as part of the Thursday Extras colloquium series.
External conference presentation
If your work is submitted to and accepted by a conference, and there is funding available for you to attend, you will be expected to attend and present your work.
External Pew presentation
You must submit your work to the Pew Midstates Science and Mathematics Consortium Fall Symposium on Undergraduate Research in the Physical and Mathematical Sciences. You must attend the symposium (including non-cs talks and present your work (in poster or talk form) if your work is accepted. You must give at least one practice talk before going to the conference. I will join you if I am able.

Janet Davis (

Created February 6, 2007
Last modified February 6, 2007
With thanks to Sam Rebelsky: