This website is a collection of information intended for students who have limited experience in coding, software development and data science but now have a need for these skills as part of their research. It is intended to act as a directory of “things you should learn about”, explaining the utility of several different tools, processes, or workflows in a basic, accessible way. This will allow you to use this page to signpost your future learning and help you learn to develop code in a more professional, efficient, and effective way.

Accordion widget

Software Testing

Testing your software is an important part of developing robust software for research. Software called “testing frameworks” exist in most languages, making it easy to write and run formalised tests for your code. By integrating the development and running of tests into your development process, you increase confidence that your code works, reduce the rate at which bugs accumulate and alert developers if they accidentally break something in the future.

Further Reading

Essential Software Engineering for Researchers: Graduate School course covering many software development skills including testing
Tutorialspoint Software Testing Tutorial: In depth guide to the theory of software testing aimed at beginners
Unittest Documentation: Documentation for the unittest testing framework in Python, as an example of a specific framework.

Version Control

Version control is a vital part of modern software development. Version control software keeps a history of changes made to a piece of code over time, allowing you to revert to a previous version if necessary. It also allows multiple versions of the code to exist as once, allowing different features to be developed in parallel before the versions are recombined. This is particularly helpful if you are working with collaborators but is also useful if you’re a lone developer.

Further Reading

Using Git to Code Collaborate and Share: Graduate School course covering the basics of Git and GutHub
Learn Git Branching: Interactive guide to Git features
GitHub Guides: A collection of guides to using Git and GitHub

Integrated Development Environments

Integrated Development Environments (IDEs) are pieces of software specifically designed to help you write code. They give you hints and useful features when writing code and provide an easy to use interface for tools useful to the design process, such as testing frameworks and version control. Using an IDE will typically boost your productivity by making the boring bits of code development easier, helping you to focus on your research.

Further Reading

What is an IDE?: A guide to IDEs
Best Text Editors: A Guide to a selection of Text Editors
Getting Started with Virtual Studio Code: Guide to getting started with VS Code
Sample Project: The Sample Project from the Video