Mobile menu icon
Skip to navigation | Skip to main content | Skip to footer
Mobile menu icon Search iconSearch
Search type

Department of Computer Science

Effective Teaching of Programming: A Detailed Investigation

Primary supervisor

Additional supervisors

  • Paul Nutter

Additional information

Contact admissions office

Other projects with the same supervisor


  • Competition Funded Project (Students Worldwide)

This research project is one of a number of projects at this institution. It is in competition for funding with one or more of these projects. Usually the project which receives the best applicant will be awarded the funding. Applications for this project are welcome from suitably qualified candidates worldwide. Funding may only be available to a limited set of nationalities and you should read the full department and project details for further information.

Project description

The methods for which Computer Science and other technical subjects have been taught in higher education have stayed relatively static in recent decades. A study of over 6000 students was conducted in 1998 by Hake [1], which assessed whether physics students learned more effectively through the use of interactive engagement compared to traditional methods. The study concluded that whilst interactive engagement methods were seen to be more effective, these approaches seem to have little lasting impact in higher education. This research can now be considered potentially out of date due to the fact that it has been a while since the survey was concluded, however, the same issues are still prevalent within higher education today and across other technical subjects. The 2014 study by Freeman, et al. [2] further adds to Hake's early research demonstrating that active learning environments are superior to traditional methods when it comes to supporting learners.

This project aims to fill this gap by studying extensively how we learn in technical subjects in higher education, specifically computer science and programming, how education works globally, and what is the most effective way to teach specific topics.

As technology advances we often try to implement new teaching methods within subject areas, paying little attention to what is the most effective way to implement these, or which methods best suit a particular topic area. Development in the teaching of computer science in higher education is typically a very slow process, as lecturers only have one opportunity each year to experiment with new ideas or methods, leading many to shy away from experimenting with new ideas and approaches. The study by Deslauriers et al. [3] showed that there is a misconception amongst students that more learning is achieved through traditional lectures rather than through active learning environments. The study showed that despite the students' perception that less learning was achieved through an active learning environment, this was not the case and those who learned the material through active learning performed better under testing. This poses the question of why in higher education do we still primarily educate through a passive lecture style over active learning sessions, and how can we demonstrate this to a cohort of students who believe traditional methods are best?

When we are young, we primarily learn through play, as this is deemed to be the most appropriate form of education. However, as we grow older we drift further away from this style, adopting a more directed teaching approach, which has been shown to be an inefficient style of learning. One goal of this project is to determine whether this is the most effective way to teach programming at a higher education institution. Bai, et al. [4] showed that the use of gamification in education is still an effective method for learning even in higher education but that it has its limitations and should be restricted in its use.

The second element of the research is to review global educational systems and assess which methods are most effective for teaching introductory programming, as education around the world is conducted in very different ways. Should we be teaching a practical subject such as programming in the same way as a more theoretical topic like mathematics? A systematic review of university level introductory programming course units globally should be conducted to both determine the more effective teaching methods and to analyse how programming is taught in differing educational systems.

Based on the data collected, we aim to design and shape introductory programming course units in higher education, based on effective learning environments, rather than relying on the "one method fits all" approach commonly adopted.

For informal enquiries about the project, please contact Dr. Gareth Henshall:

Person specification

For information


Applicants will be required to evidence the following skills and qualifications.

  • You must be capable of performing at a very high level.
  • You must have a self-driven interest in uncovering and solving unknown problems and be able to work hard and creatively without constant supervision.


Applicants will be required to evidence the following skills and qualifications.

  • You will have good time management.
  • You will possess determination (which is often more important than qualifications) although you'll need a good amount of both.


Applicants will be required to address the following.

  • Comment on your transcript/predicted degree marks, outlining both strong and weak points.
  • Discuss your final year Undergraduate project work - and if appropriate your MSc project work.
  • How well does your previous study prepare you for undertaking Postgraduate Research?
  • Why do you believe you are suitable for doing Postgraduate Research?