Fork me on GitHub


Teaching: 20 min
Exercises: 10 min
  • What are the steps for organizing a CodeRefinery workshop?
  • How should I prepare before teaching or helping in a workshop?
  • Learn how to use the manuals to organize and teach a workshop.

Organizing a CodeRefinery workshop

Anyone can organize a CodeRefinery workshop and teach the CodeRefinery lessons which are licensed under CC-BY. However, making it a successful workshop requires careful planning and preparation. Here we will go through practical aspects of organizing a workshop.

Workshop manuals

CodeRefinery maintains a number of workshop manuals with practical tips and checklists. We will be referring to this material below.

Before the workshop

  • Select workshop coordinator
  • Instructors and helpers
  • Lecture room
  • Advertising the workshop
  • Communication with registered participants
  • Practicals

Set up a workshop webpage

  1. Go to the workshop template repository.
  2. Click the green “Use this template” button to import the template to your own account. Name the new repository to include a date and a location, e.g. “2019-12-24-stockholm”.
  3. Clone the new repository and inspect the files. Open, update some fields and commit the changes.
  4. Push the commits. The workshop page should now be served on GitHub Pages (e.g.,

Pre-workshop survey

It is very useful to ask future workshop participants to fill a pre-workshop survey before attending a workshop. The survey should probe the participants’ previous experience with different tools and programming practices, which operating system the participants use and what lessons they are most interested in.

The questions that are currently asked in the CodeRefinery pre-workshop survey are the following:

  • What is the operating system that you will use during the course (on your laptop)?
  • Which version of operating system are you using? If your operating system is Linux, which distribution are you using?
  • Are you using version control? If yes, which?
  • Which programming languages are you using or will you use in your projects?
  • Are you using automated testing in your programming project(s)?
  • Are you using code coverage analysis in your programming project(s)? These are tools and services like Gcov, Cobertura, Codecov, Coveralls, Code Climate, etc.
  • Are you employing code review in your programming project(s)?
  • Are you using the Travis or Jenkins or GitLab CI continuous integration service in your programming project(s)?
  • How do you document your code?
  • Are you using a web-based repository for your code(s)? Which ones?
  • How would you describe your programming experience?
  • How comfortable are you with the Unix/Linux command line working in a terminal window?
  • Are you using an integrated development environment (IDE) for your programming project(s)?
  • Please specify your main academic discipline. Please take the entry which is closest to your main field of study/work.
  • Please select the sessions that you are most interested in.
  • What do you expect to get from this course?

Discussion: Pre-workshop survey questions and results

  • Take a moment to read the survey questions. Is there anything you would want to add? Or remove?
  • How do you think the survey results look like for past workshops? Have a look at the survey repository which shows the main results, and compare them with your expectations.

Preparing lessons

  • Go through the lesson material you will be teaching and think about how you intend to teach it, and how much time you will be spending on each episode.
  • Are there any unsolved issues that you can fix?
  • Go through the instructor guides of the lessons you will be teaching.
    • Review the intended learning outcomes, and try to keep these in mind while teaching.
    • Try to memorize the typical pitfalls and common questions.
  • Go through the lesson presentation hints.
  • Go through the helping and teaching guide, and request all helpers to go through it too.

During workshop

  • Give an introductory talk, see
  • Have a 10 minute ice-breaker session where participants and instructors introduce themselves and either describe their research in 2-3 sentences or what they hope to get out of the workshop.
  • While teaching, keep these tips in mind
  • Don’t start off with tech details, say why this is important.
  • Try to stick to the material, although some excursions are useful.
  • Wrap up, say what you taught and why, and what comes next.

End of workshop

  • Give credit to those who contributed and helped.
  • Say some final words.


  • Process final feedback and distribute to co-instructors (e.g. type up in shared document)
  • Debrief with instructors.
  • Process certificate requests.

Post-workshop survey

To measure the long-term impact of CodeRefinery workshops it’s useful to send out a post-workshop survey. This survey can identify which topics taught in workshops are particularly useful and which have less benefits for the participants.

The survey currently contains the following questions:

  • Which workshop did you attend?
  • What is your current position?
  • How has your usage of the following tools/services changed after attending the workshop? (possible answers: 1. I started using this tool; 2. I don’t use this tool; 3. I’m using this tool in the same way as before; 4. I’m using this tool better than before)
    • Version control
    • Automated testing
    • Travis CI
    • Code coverage analysis
    • Jupyter Notebooks
    • Code review
    • Read the Docs or GitHub/GitLab/BitBucket Pages
  • Would you judge your code to have become more reusable/reproducible/modular/documented after attending the workshop? (yes/no questions)
    • Reusable
    • Reproducible
    • Modular
    • Documented
  • Has it become easier for you to collaborate on software development with your colleagues and collaborators?
  • Have you introduced one or more of your colleagues to new tools or practices as a result of the workshop?

Key Points