Dr Robert Henderson: Private Computer Programming Teacher

Photo

I offer online computer programming lessons, to students aged 8 to adult in pairs or one to one.

Contents

Contact details

Phone: +44 7762 414582

E-mail: rjh at fiveysoftware dot com

Postal address:

Fivey Software
9 Hills Road
Cambridge
CB2 1GE
UK

About me

I am an independent computer scientist based in Cambridge, UK. For more information about me, my professional experience, and qualifications, please see my profile page.

Why learn programming, and what age to start?

Fractal Code snippet
Detail of the Mandelbrot set fractal, with code snippet.

There are many reasons for wanting to learn computer programming, including:

For my lessons, the minimum recommended age is 8 years old. However, it is certainly never too late to learn programming and I welcome both children and adult students.

What I teach

I specialise in teaching the practical skill of programming, with an emphasis on fun and guiding the student to acquire the skills they need to explore their own ideas and to do projects that they find interesting.

Platform game Code snippet
A platform game, with code snippet.

My focus is on giving students a strong grounding in the underlying principles of programming and computational thinking that are independent of a particular choice of programming language. A solid understanding of these principles will put a student in a position to pick up new programming languages with relative ease. I believe that such an approach is vital given the (sometimes daunting) variety of programming languages out there, with new ones created all the time.

With the above in mind, I generally use the C programming language in my lessons because I find C to be particularly suitable for exploring the core principles of programming (C is a relatively simple language and has a clear logical structure). I have developed my own approach to teaching programming using C that is especially aimed at beginners and younger students. Don't be put off if you have heard that C has a reputation for being a hard language — my approach largely avoids certain features of C that have given it this reputation!

Rainbow Code snippet
Computer-generated artwork, with code snippet.

I adapt my lessons according to the age, experience level, and interests of the student but in general you will learn:

  1. to write programs in a subset of the C programming language — see here for a list of C language features that I cover;
  2. to write programs that do interactive graphics and animation from the very first lesson;
  3. to understand and reason with type declarations, which give you the means to explore the commands available for your use in program libraries;
  4. to understand and reason about the control flow of programs, and to debug programs effectively;
  5. to design your own file formats and data structures;
  6. software design and engineering techniques, particularly the crucial technique of abstraction which helps you to keep the complexity of your programs manageable;
  7. most importantly, to apply all of the above to do the things that you want to do with computers!
Physics simulation Code snippet
A rigid body physics simulation showing forces, with code snippet.

In the lessons we shall make use of a software system called Biksel, which I have developed as a tool to help people learn and teach programming. Biksel is free / open-source software and is available for use by anyone, regardless of whether you are taking my lessons.

Pricing

Lesson type Lesson length Price per student
pair half hour £8.75
pair full hour £17.50
1-1 half hour £17.50
1-1 full hour £35.00

I normally provide one trial lesson free of charge. After that I charge a flat rate for my time of £35 per hour (GBP). The table above shows the prices for different lesson types and lengths at this rate.

If you wish to get the best value for money, I highly recommend pair lessons, where the cost is shared between two at a rate of £17.50 per hour per student. Pair lessons can be very enjoyable because you can learn along with a friend, help each other, share ideas, and collaborate on projects. I use a technique called pair programming where one student directs and the other does the typing, and they swap roles every few minutes.

Please note that if you have particular requirements, such as help with a specific programming language or practice for an exam, I may need to charge for additional preparation / lesson-planning time, at my usual hourly rate.

Please also note that if you arrange a lesson and then don't show up or cancel at very short notice, I may have to charge for it.

Hardware and software needed

To take part in my lessons you need:

You will also need to install the following free / open-source software on your PC:

If you need help installing and setting up this software, I can walk you through this at the beginning of your first lesson.

Finally, to continue programming in your own time outside of lessons (which is very important!) you need access to a computer running the GNU/Linux operating system, for example a Raspberry Pi. A Raspberry Pi is a small, cheap computer that was created specifically to help people learn programming. You can try my lessons for as long as you like before deciding whether to get a Raspberry Pi.

Privacy policy

I take the following measures to protect the privacy of my students:

Server

I host my lessons on a virtual private server running Debian GNU/Linux, that I administer myself. The server is provided by a reputable UK-based cloud hosting company, and is physically located in the UK.

Software

All the software that I ask my students to install, and all the software that I run on my server, is free / open-source and has been vetted by me to provide a high standard of security and privacy.

Voice chat

Voice chat is audio only. No webcam data is transmitted during lessons.

Screen-sharing

I do not see what is on the screen of a student's PC, nor does the student see what is on mine. Instead, we both see the same virtual desktop environment hosted on my server.

Data transmission

All data transmitted to/from my server is done so via a secure, encrypted connection. Specifically, I use Transport Layer Security with a Let's Encrypt server certificate.

Data (non-)retention

No personal data or student work is stored on my server between lessons. After each lesson any files created or uploaded by the student are automatically wiped so as to reset the server in preparation for another lesson. The student will have the opportunity to download their work to their own PC at the end of a lesson, and they will be responsible for looking after their work (including making backups).

Website

I use neither cookies nor Javascript on any of my websites, and I do not track visitors to my websites.

The following are websites of some friends and colleagues, whose services I can warmly recommend.

Home