Michael Kölling

Vice Dean (Education), Faculty of Natural and Mathematical Sciences

King's College London
Strand, London, WC2R 2LS, UK



Are you interested in doing a PhD?

I am looking for new PhD candidates. If you are interested, please see below, at the bottom of this page. If you are currently doing a Masters degree: It's not too early to start talking. If you are intertested, contact me.

Selected publications

Blue, BlueJ, Greenfoot: Designing Educational Programming Environments
Michael Kölling. Book chapter, in Innovative Methods, User-Friendly Tools, Coding, and Design Approaches in People-Oriented Programming, 2018.

Blackbox, Five Years On: An Evaluation of a Large-scale Programming Data Collection Project
Neil C.C. Brown, Amjad Altadmri, Sue Sentance, Michael Kölling. ICER 2018. ACM, 2018.

Frame-Based Editing
Kölling, M., Brown, N. C. C. & Altadmri, A. Journal of Visual Languages and Sentient System (3), 2017.

Evaluation of a Frame-based Programming Editor
Price, T. W., Brown, N. C. C., Lipovac, D., Barnes, T. & Kölling, M. ICER 2016. ACM, 2016.

Heuristic Evaluation for Novice Programming Systems
Kölling, M. Transactions of Computing Education, 16 (3), 2016.

Educational Programming on the Raspberry Pi
Kölling, M. Electronics, 5 (3), 2016.

Lessons from the Design of Three Educational Programming Environments: Blue, BlueJ and Greenfoot
Kölling, M. International Journal of People-Oriented Programming, 4 (1), 2016.

(Other publications are in the King's repository, the University of Kent repository and Google Scholar.)

BlueJ book cover

David J. Barnes & Michael Kölling

Objects First with Java
A Practical Introduction using BlueJ

Sixth edition, Pearson Education, 2016

ISBN: 978-013-447736-7 (US) / 978-1-292-15904-1 (Int'l)

Book website

Reflections book cover

Jens BennedsenMichael E. CaspersenMichael Kölling

Reflections on the Teaching of Programming:
Methods and Implementations

(Lecture Notes in Computer Science)

Springer; 2008
ISBN: 978-3-540-77933-9

Book website

Grenfoot book cover

Michael Kölling

Introduction to Programming with Greenfoot
Object-Oriented Programming in Java with Games and Simulations 

Second edition, Pearson, 2016

ISBN: 978-013-405429-2

Book website

Research interests
  • Programming languages, software tools, HCI, programming education, object-orientation


BlueJ logo


An educational programming environment aimed at introductory university or late school level learners.


Greenfoot logo


A graphical, interactive novice programming environment aimed at school level learners (age 14 upwards).


Blackbox logo


A data collection project collecting large scale novice programmer user data to support programming education research.


Stride logo

Stride / Frame-based editing

A new language and program manipulation paradigm to support ealy learners transitioning from block-based to text-based programming.



The project team: Neil Brown / Davin McCall / Amjad Altadmri / Hamza Hamza

PhD opportunities

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?