This page describes how we teach Scala at ScalaBridge; our pedadgogy. The curriculum page covers what we teach.

Why Worry About Pedagogy?

Teaching is a skill that can learned, and improving at this skill definitely makes a difference to how effective our lessons are. We all have experience of teaching to some extent, so our baseline level of skill is probably higher than the average person’s baseline programming ability, but that doesn’t mean the ceiling is low.

We want to improve the teaching at ScalaBridge London, so we have some specific teaching techniques we want you to use, along with some general tips. The techniques may not work, but at least if we are intentional in what we try we can make definite statements about our results and improve our techniques. So please try to use the techniques below.

Session Structure

Our sessions are run using interteaching (also see here), with a bit of mastery learning thrown in. Here is how it works.

Students, with a bit of help from mentors, decide which curriculum they are following. Each curriculum consists of series of topics. Before each session the student decides if they are ready to move on to the next topic, or if they need more practice and will stay on the same topic as last session. They then undertake the reading and other work for each session.

Each session runs as follows:

  • students taking the same topic gather together with the mentors who are teaching that topic;
  • students get into small groups (2 or 3) to discuss the questions for the topic, with regular feedback from the mentors;
  • the entire group reforms to discuss answers to the questions and in particular issues that came up; and
  • the mentors then clarify the issues that arose.

We now explain these steps in more detail.


To prepare for the session students complete some reading and attempt to answer questions relating to that reading. The questions are a mixture of programming and other tasks.

All questions are in our lessons repository.

Group Discussion

Group discussion takes place in small groups (2 or 3). Ideally the groups are different each time. In the groups the students discuss their answers to the questions, and work to extend or improve their answers as a result of the discussion. Mentors are actively engaged in these discussions. The mentors aim to not give the students answers but give them prompts to they can discover the answers themselves.

The discussion should take about one to one and half hours.

Group Discussion and Clarifying Lecture

Once the discussion ends, all the students taking a topic in a session get back together. The mentors lead discussion through the questions. Student groups will be selected to give answers, and any student who had issues with a question is encouraged to raise them at this point so the class can clarify and discuss. As well as reinforcing the lesson this part is an opportunity for students to share ideas with the wider group, and to build the community that we believe in important at ScalaBridge.

This should take the remaining time available.


Our main technique is interteaching. We don’t want to do formal assessment (I’m assuming most people have had more than enough in the school life) so we don’t do the aspects of interteaching that involve assessment. As we’re not working towards a final exam we can allow people to progress at their own pace, as in mastery learning. However we don’t have assessments that gate advancement; we leave this to the students to decide. As we have a low student to mentor ratio and fairly small classes we can make things a bit more interactive than in standard interteaching.

Programming Strategies

Our other main technique is the use of programming strategies to teaching programming. Pending a better description please see this draft paper

Tips for Mentors

Feedback is very important but don’t give students the answers. It is important that they struggle with their problems so that they can learn. Instead of giving them a solution to a problem give them prompts to find the solution themselves. For example, if they have a programming problem ask them what they think the expected results should be, prompt them to recall a strategy, or encourage them to write a smaller program that focuses on the particular issue they are facing.