is always seeking computer science educators, open-source software developers,
and HCI researchers to collaborate with us. Please contact Chris
Hundhausen if you are interested.
and Graduate Research Assistantships
is always looking for qualified undergraduate and graduate students with
interests in human-computer interaction and GUI programming, and funded
positions do open up from time to time.
an update on available positions, please contact
project page contains links to current projects. An even more recent
description of recent projects can be found on the VEUPL
wiki. Browse these pages to see if any projects might be of interest
to you. In addition, below are suggestions for student projects that I
would be interested in supervising. Please contact
me if you are interested in any of these, or if you have ideas of
help systems for end user programming (10/7/04). Within an end-user
programming environment, how can a user best overcome common programming
barriers and become productive quickly? At least two alternative,
and not necessarily mutually exclusive, forms of help might be provided
to users. One form of help would be to provide lightweight, minimalist
instruction in context. For example, if users are having trouble formulating
a Boolean comparison, the system could bring up a window with some
examples of valid Boolean comparisons. An alternative form of help
would be a syntax helper that allows the user to formulate only syntactically
valid statements. So, for example, when the system detects that a
user is having trouble with a Boolean conditional, it could pop up
a special helper dialog that enabled the user to formulate a syntatically
correct Boolean statement by dialog box fill-in and/or direct manipulation.
In this project, you'd begin by designing a minimalist help system
and helper dialog for a few commands in the ALVIS
end-user programming environment. You would then conduct an experimental
study that compared the two alternatives, along with the combination
of the two. The project would ultimately be able to make more general
statements about the appropriateness of the different forms of help
within an end user programming environment.
- Exploring alternative
user interface models for specifying hypothetical logic within a procedural,
demonstrational end-user programming environment (8/2/04)—The ALVIS
algorithm visualization system supports the specification of algorithmic
procedures through programming by demonstration. In ALVIS, a script
window, which displays the algorithm code being executed, is synchronized
with the animation window, which displays the graphical animation resulting
from the execution of that code up to the current editing insertion
point. A key advantage of this synchronization is that ALVIS users are
able to specify much of an algorithmic procedure by directly manipulating
the graphical objects in the animation window.
As one builds an algorithm, one often needs to specify conditional blocks
of code through if-else and while statements. What if the current state
of the program is such that a given conditional block of code won't
be entered. For example, in the following code block:
create variable foo
set foo to 0
if (foo = 0)
set foo to 12
the statement within the else block will not be executed, at least not
in the initial execution. Assuming that we always want the editing point
in the script view to be synchronized with the animation displayed in
the animation view, how can one specify the else block? At least three
possible solutions could be explored:
- Execute the script
as far as possible (up until the start of the else block), but then
suspend execution and operate in a non-synchronized mode in which
the user can type, but not use direct manipulation to specify the
- Execute the script
into the else block, but enter a new, "hypothetical" mode
in which direct manipulation can be used to specify statements; however,
that direct manipulation is on an animation window whose state reflects
the program before the if statement's true block was executed.
- Execute the script
into the else block by artificially changing the program state such
that the else block would be executed. In the above example, one would
have to set foo to a non-zero value in order to enter the else block.
In this research
project, you would set up three experimental versions of ALVIS that
implement these three alternative models, and then carry out an empirical
study in which you'd have users work through algorithm specification
tasks. Using a variety of measures (e.g., errors, performance time,
communication breakdowns), you'd compare and contrast the three alternative
the Closeness of Mapping Hypothesis (6/30/04)—I have published
a pilot study that explores
the hypothesis that certain programming languages (e.g., Java, C,
SALSA) are more compatible with certain algorithm description languages
(e.g., pseudocode, visual examples, natural language) than others.
The better the match between the algorithm description and the programming
language, the faster and less error-prone are translations from the
algorithm description to the programming language.The pilot study
provides preliminary support for the hypothesis. A nice master's thesis
would be to carry out the full experiment, possibly redesigning the
framework to better tease apart the issues. Note: This project requires
a solid background in experimental design, and will require that a
psychologist sit on your committee.)
Study of Algorithms Experts (6/30/04). According to sociocultural
constructivist learning theory, learning entails increasingly central
participation in a community of practice. Such participation might
entail an ability to participate more actively in conversations about
topics of interest, and an ability to read and write the representations
used by the community of practice. My
CAREER Award proposal outlines a methodology, based on Cultural
Consensus Theory, for measuring one's "cultural" competence
within the community of "algorithmaticians" based on"reading"
and "writing" tasks involving graphical representations
of algorithms. A nice master's thesis would involve further fleshing
out the design of a consensus study, and then carrying it out on a
group of expert algorithmaticians. This
paper presented at the CSCL '99 conference can help you get started
with this project; talk to me for more guidance.
Studio-Based Approach to teaching Human-Computer Interaction (6/30/04).
My CAREER Award research is exploring a studio-based approach to teaching
an undergraduate course on computer algorithms and data structures.
This approach seems perhaps even more fruitful in a course on human-computer
interaction design. In addition to a weekly lecture, such a course
could revolve around a weekly, 150-minute "design studio"
that emphasizes conceptual user interface design activities. Pairs
of students could interact with custom, sketch-based software (similaar
to ALVIS) to construct low fidelity
design prototypes that meet the requirements of given design problems.
Each design problem would (a) focus on the development of an interface
to a specific electronic device (e.g., a VCR) or software system (e.g.,
a ticket booking system) and (b) require students to apply the design
processes and principles currently being explored in class. In "design
crits" held at the end of each studio, select pairs of students
would present their designs to the rest of the studio for feedback
and discussion. A master's thesis on this topic would involve implementing
the underlying sketch-based software, and testing it out within a
pilot studio-based offering of CptS 443 (HCI).
Literature Review of Software Visualization Empirical Studies
(6/3/2002)—I have published
a meta-analysis of experimental studies of algorithm visualization
effectiveness. I am interested in expanding this meta-analysis
not only to non-experimental empirical studies, but also to empirical
studies of software visualization, rather than just algorithm visualization.
Software visualization encompasses the use of visual representations
to aid in software design, engineering, and debugging. What empirical
studies have examined software visualization in these contexts, and
what have been the results?
really help? (6/3/02)—Some software engineers tout formal proof
techniques as an effective means of ensuring the correctness of software.
This is actually an empirical question, testable through a comparative
study of formal proofs versus alternative correctness-enhancing measures
such as unit testing and debugging. An interesting research project
would be to design and carry out such a comparison.
in computer science (6/13/02)—Computer science practice is filled
with design activities. For example, computer scientists design algorithms,
user interfaces, VLSI circuits, and object-oriented software. What
do these design activities have in common? What is the role of collaboration
and visualization in these design activities. This project entails
conducting some field studies of various computer science design activities,
with the goal of better understanding their similarities, differences,
and how collaboration and visualization technologies might better
support these activities.