This document provides an overview of the summer projects I have available for Grinnell students and the expectations I have of my summer students.
This page may be found online at
http://www.cs.grinnell.edu/~rebelsky/Department/samr-summer-2009.html
The application guidelines can be found online at
http://www.cs.grinnell.edu/~rebelsky/Department/glimmer-app-2009.pdf.
Contents
In this project, we are exploring scripting. What do we mean by
scripting
? There are clearly many ways in which computer
scientists and computer programmers use the term, such as (1) writing
small programs that handle administrative tasks (the original goal of
Perl); (2) writing programs in PHP that build Web pages or in ECMAScript
to (a.k.a. JavaScript) to make pages interactive; and (3) Visual Basic
scripts used in Microsoft applications. We are focusing on something
similar to the last interpretation, but in a more interactive context.
In particular, we are considering how to support the kinds of small
programs that novices might write in the context of working with a
computer application, such as a graphics program or a word processor.
This project has evolved from some investigations of the applicability of the Scheme programming language (and, more generally, the functional programming paradigm) to a variety of image-based computations that I began in summer 2006. In summer 2007, we began to look at ways to bridge this project with various open-source applications, particularly the GIMP and InkScape, and to support better scripting of these applications in Scheme.
This past year, to deal with deficiencies in the scripting console in
the GIMP, Soren Berg and I have been building a new user interface for
interactively scripting the GIMP. We've ended up generalizing most of
what we were doing, making the interface support multiple applications
and multiple scripting languages. Hence, the direction of the project
has moved from describing images functionally to investigating how best
to support and encourage interactive scripting of applications.
By interactive
, we mean that the environment should support and
encourage non-programmers to intermingle scripting with their regular
use of the application. (We call the interactive-scripting approach
IAScript and the media-focused version MediaScript.)
There are three directions in which we might expand IAScript and
MediaScript this summer: We can add support for more languages, we can
add support for more applications, and we can develop a large suite of
illustrative examples that demonstrate the power of interactive scripting.
MAP students and MIP (Mentored Introductory Project
; 299) students
will work on projects of their choice. MIP students will work primarily
on developing the suite of illustrative examples. MAP students work in
teams of two or three on language and application extensions. It's not
clear how long all of these extensions will take, so some students may
work on a single subproject all summer while others may work on multiple
related subprojects.
The team of MIP students working on illustrative examples will focus on the original application domains we have been exploring for scripting (raster graphics and vector graphics) and on the Scheme programming language. I expect that the first examples these students will work on will be extensions of our current examples:
The MIP students will consider the core GIMP procedural operations
and consider appropriate ways to wrap
those operations to make them
more usable by novice programmers.
The MIP students will work through a classic text on using computers in art, Visual Modeling with Logo, finding ways to reframe and extend the examples using interactive scripting in Scheme.
The MIP students will explore tutorial guides for the GIMP and for InkScape, finding natural ways to turn long sequences of manual actions into scripting commands.
The MIP students will also work on the design of an online repository of illustrative examples. That is, they will consider ways to present, to tag, and otherwise to provide convenient access to the examples.
Support for a language in IAScript/MediaScript requires a number of steps:
By the time this summer rolls around, we should have support for three language dialects:
There are a number of languages that we would like to support. I expect we'll focus on one or two of these this summer
Support for a language requires as many things, and is likely to be more complex.
By the time this summer rolls around, we should have support for two applications:
I am open to suggestions for other applications to script. Two that come to mind are
It may also be appropriate to pick domains, rather than applications, and look at how to best support interactive scripting for the domain. Right now, one domain seems particularly appropriate:
It may also be appropriate to look at variants of MediaScript that better support interactive image creation using particular libraries:
MAP students should expect to do a significant amount of C programming, as IAScript and many open source applications (particularly the GIMP) are implemented in C. In most cases, I will expect MAP applicants to be familiar with C and memory management in C.
IAScript relies on the GTK+2.0 user interface toolkit. It also uses
the GObject objects in C
library. I will not expect students to
be familiar with these libraries, but they will need to learn them.
Scheme remains the core IAScript language. I expect all applicants
(both MAP and MIP applicants) to be comfortable with Scheme and with
basic higher-order concepts, such as map.
We use autoconf and automake to manage compilation. I do not expect that students will know these tools before they begin, but they will need to learn them quickly.
We use SVN to manage our code repository. Once again, I do not expect that students will know how to use SVN, but I do expect them to learn quickly.
There will, of course, be other technologies that we use. Particular technologies are likely to depend on the project.
Note that any usable software written in this project will be distributed under an open source model. IAScript and MediaScript have a two-paragraph BSD license, and I expect to continue to use this form.
The spring portion of this schedule mimics the schedule officially approved by the division. However, I will certainly understand if students accept a position with me and then later choose to take a position elsewhere. In that case, I will notify students on my waiting list.
The particular ten weeks we use for summer research are currently under discussion. I would like to start on May 19, but other issues may make that impossible. Hence, the schedule may move back a week.
I have very high expectations of my summer research students. Among other
things, I expect my students to begin their summer
research during
spring semester and continue their summer
research into fall
semester (and sometimes beyond). By applying for summer research you
are agreeing to meet these expectations if I take you on as a research
student. You are unlikely to receive explicit credit or compensation
for work in the spring and fall.
As some students from the past may have reported, I expect my students to be self-reliant. While I do my best to be around, I expect you to be able to do many things on your own or with a small group.
During the summer, you are expected to work full-time on the project (40-50 hours per week for ten weeks). Most of the work will be done in my research laboratory, during normal hours (8/9 to 4/5). The work will include scheduled daily group meetings.
the state of the artin whatever project you've decided to undertake. You should prepare a short survey paper. On the first day of the second week, you will give a public presentation of your work.
I realize that some students may be unavailable in the fall, due to a study-abroad program or similar opportunity. Those students will do what they can of this work (e.g., they might present work in the spring, rather than in the fall).
There are, unfortunately, a number of conflicting issues I must consider
as I choose who to accept for summer research. While one goal is
certainly to enhance my research, summer research also helps students,
the department, and the institution. My approximate MAP priorities are as
follows, although I will certainly take some students from lower
categories before taking every student from a higher
category.
Because women and domestic students of color are under-represented in computer science, I will strive for some equity in the mix of students I select. I hope this will encourage more members of these groups at Grinnell to participate in computer science and, as they go on to successful careers, that they will further encourage others.
I many years, I have imitated the early research experience program in Physics and will reserve a few slots for first-year women and students of color who have expressed an interest in and aptitude for computer science. It is likely that these will be the only first-year students I take for paid positions.
Applicants should fill out the divisional summer research application,
which is available from the science division office and at
http://www.cs.grinnell.edu/~rebelsky/Department/Sci_Div_Summer_2009_Res_App.pdf and
http://www.cs.grinnell.edu/~rebelsky/Department/Sci_Div_Summer_2009_Res_App.doc.
In addition, applicants must prepare responses to
the Glimmer application form, available at
http://www.cs.grinnell.edu/~rebelsky/Department/glimmer-app-2009.pdf.
Finally, applicants must meet with me for a fifteen minute interview.
I am likely to distribute the essays (project description for upper-division students, essay questions for first-year students) from your applications anonymously to a group of trusted advisors. We will each evaluate each person's essay or essays on a 1-4 scale.
After evaluating the various parts of the application, I will score each applicant using something like the sum of the following:
I may discuss applicants with colleagues before and after the interview. While the interview and those discussions are not directly incorporated in the score, they provide additional information. In particular, I will not necessarily use the rankings as an absolute order. For example, a very poor interview may disqualify you, no matter how good your overall score is, and I may bump up a person with an excellent interview or who past experience suggests will fit well in my research team. I may also prioritize students with certain skill sets.