skip to content

Summer Research Programmes


Learn to Code Guide

This guide was kindly put together by Graham Van Goffrier, former CMP and Part III student. Click here for the PDF version.

Computing dominates the modern world in a way that no other technology ever has. There are essentially no professions, especially those relating to mathematics, which do not require at least basic computer proficiency. But if you’re reading this, you’re not satisfied with a surface-level understanding. You want more!

The purpose of this page is to guide you towards several effective pathways for learning programming basics which you may not see in your coursework. These recommended resources are organized into four categories which may appeal to different styles of learning. I strongly advise you not to limit yourself to just one of these; the variety of teaching styles in these resources is very broad, and you will benefit from exploring different perspectives on programming style and structure.

Massive Open Online Courses (MOOCs)

Over the past decade, MOOCs have surged as alternatives for gaining knowledge outside of standard educational institutions. They provide video lectures, reading suggestions, assessments, and personalized pacing, often at zero cost to you! All these features make MOOCs ideal environments for learning how to program.

Open-Source Textbooks

Many maths students will agree that no resource can compare with a clearly-written textbook, and the spirit of open-source development means that many such instructional books are available online. You will need to set up an integrated development environment (IDE) on your machine; check out

Competitive Coding (more casual than it sounds)

An important step in refining any new skill is to apply it in diverse practical situations. Many challenge-coding sites started as a way for expert coders to prove their dominance, but have now expanded to attract learners at any level. In combination with a course or textbook, competing can help to develop your skills and confidence.

  • -- Don’t be fooled by the video-game parody aesthetic! The challenges on this site will guide you towards some of the most valued tools of experienced programmers. Check out varieties such as “Code Golf” where you solve tasks with the shortest number of characters possible, and “Bot Programming” where you design an artificially system to compete with other players in real time.
  • -- A more professionally-structured site which offers collections of puzzles focused on a particular programming language or computer science topic. You can also apply for software jobs through their interface.

Have fun with it!

Learning how to program can be a social experience as well as an educational one. Self-learning doesn’t mean only working alone -- it means seeking out all resources which can help you reach your goals, including the guidance of the people around you. Make a GitHub to easily join collaborative projects, or start your own with a friend!