I am currently looking for new PhD students. If you are interested in a PhD in the area of software tools and/or programming education, please email me. It helps if you have done some research and preparation before mailing. It also helps if you have some (possibly vague) idea what kinds of things you are interested in.
If you choose to do a PhD with us, you have the opportunity to work closely in a group with many years of experience in research in CS education, development of educational tools, and development of pedagogy for programming education.
Many of the projects we are interested in require a lot of technical skills; it helps if you are a very good programmer, and interested in programming.
Below are a few ideas for possible areas for PhD projects. You are also welcome to mail me with your own ideas.
Possible PhD project areas:
Big Data in Programming Education
The Blackbox project has collected a lage amount of data about the
behaviour of novice programmers. We have data about hundreds of
millions of programming sessions.
So far, this data has been analysed
only very superficially. An interesting project would be to use a big
data approach for deeper analysis of this data set, and to work out
what we could learn from this.
Programming as an HCI challenge – IDE Interaction Design
Stride was a first attempt to revisit the design of program editing
from an HCI perspective, in the context of novice programmers. What
would it look like to approach professional IDEs from this perspective?
This project would take a Stride-like approach to professional tools
and design, build and evaluate a new, better editor.
Stride Analysis
The goals of the design of Stride was to achieve improvements in
various aspects of learning to program. Fewer syntax errors, better
motivation, faster achievements, better retention, improved general
satisfaction. Does this design achieve these goals? We don't know.
This project would study the effectiveness of Stride compared to
other systems with real users.
Program editor design for accessibility
Most program editors use text for editing. Screen readers can be used
with text-based editing by visually-impaired programmers, but the syntax
can often be confusing. Whitespace and punctuation are highly
significant in program text but often omitted or have poor interaction
with screen readers. Block-based editors rely less on syntax, so are
potentially more suitable for accessible programming – but blocks are
often manipulated only through drag-and-drop interactions which are
ill-suited to visually-impaired users. Our existing Stride editor
combines keyboard interactions with structural programming, but does not
yet have support for accessibility tools. This project would look at
improving the Stride editor to work well with accessibility, especially for
vision-impaired users, including the design, implementation and evaluation
of the editor with actual users.
Contextualising big programming data
The Blackbox project has been running for over five years. It collects
data from novice programmers: source code that is written, compilation
errors displayed, and various other data about a programmer's
interaction with the BlueJ IDE. The data is collected without any
further context: we do not know the age or experience of the programmer,
whether they are on a course or not, whether they are doing well on
their assignments, and so on. This allows for a large data set, but one
that is stripped of useful context. This project would investigate
collecting useful data (e.g. experience, course grades) for a subset of
Blackbox participants, to provide a richer subset for other researchers,
and to be used in the project to investigate associations between
programming activity and success on a course.
Programming history for learning and reflection
Version control provides a way to store and view the history of program
code. This is generally considered an advanced tool, used for
collaborating or once a programmer is working on a large code base.
This project would investigate the implications of using built-in
automatic version control. Can this help during novice
program development, can it help students in reflecting on their
learning progress, and could it be used to provide more
accurate programming assessment. This would involve the design,
development and multiple evaluations of automatic version-control in a
beginner's IDE.
Better error help using large scale programmer data
Could large scale beginning programmer data be used to give useful hints
and help to beginners stuck on an error? For example, if a novice had
problems with a task, could perhaps useful hints be automatically
generated by analysing previous users who had similar problems, what
they did, and whether their actions led to solving the problem? |