|28 Mar 2023||9:00–13:00||SG2, Alison Richard Building, The Sidgwick Site|
Mary Chester-Kadwell – Lead Research Software Engineer, Cambridge Digital Humanities
Please note this workshop has limited spaces and an application process in place. Application forms should be completed by noon, Sunday, 12 March 2023. Successful applicants will be notified by the end-of-day Tuesday, 14 March 2023.
This course introduces best practices and techniques to help you better manage your code and data, and develop your project into a usable, sustainable, and reproducible workflow for research.
Developing your coding practice is an ongoing process throughout your career. This intermediate course is aimed at students and staff who use coding in research, or plan on starting such a project soon. We present an introduction to a range of best practices and techniques to help you better manage your code and data, and develop your project into a usable, sustainable, and reproducible workflow. All the examples and exercises will be in Python.
If you are interested in attending this course, please fill in the application form. Places will be prioritised for students and staff in the schools of Arts & Humanities, Humanities & Social Sciences, libraries and museums. If you study or work in a STEM department and use humanities or social sciences approaches you are also welcome to apply.
By the end of this course you should be able to:
- Understand the role code plays in research, and discuss whether it could or should be open, reproducible and sustainable.
- Set up a new project, or re-organise an existing project, using best practices to structure, version, run and document code.
- Do a basic re-organisation of existing code to make it easier to automate or more pleasant to use.
We will cover:
- Code as a research artefact: experimental vs reusable code; questions of publishing code and licensing; principles of openness, reproducibility, sustainability.
- Project management:
- Project structure: use a widely-used template to organise your project;
- Version control: track the history of code to document progress, roll back and never lose your work;
- Dependencies: record the libraries your code relies on so you can reliably run your code;
- Virtual environments: isolate your code from the rest of your system to avoid conflicts with different versions of dependencies;
- Documentation and self-documenting code: various ways to document your code for your future self and others.
- Refactoring (re-organising) code for re-use and automation:
- Transform long functions and Jupyter notebooks into small functions;
- Turn scripts into command-line programs you can automate;
- Add a GUI to programs (i.e. windows with buttons) to make your code easier and more pleasant to use.
- Next steps: resources and directions.
This course is a 4-hour in-person hands-on workshop, incorporating short breaks.
Important: preparatory material is released in the week before the course takes place. Please make sure you can plan time in your schedule to check and complete the preparatory materials in order to be fully prepared for the workshop.
Time estimates for preparatory materials (total: up to 3 hours, depending on your existing setup and knowledge):
- Required installations/set-up: up to 1 hour
- If required: Basic introduction to the command-line: 1-2 hours
Existing knowledge of Python is required, including a working knowledge of Python syntax, variables, conditions, loops, functions and imports. You should be using Python in research in some way, and have some existing code to work with, or plan to start such a project soon. Basic knowledge of the command-line would be of benefit, but preparatory material will be available on this topic.
If you are unsure whether your coding experience is sufficient, please apply anyway and we can talk about it together.
You will need to bring a laptop to the workshop. You will need: Python 3, a text editor or IDE of your choice, git version control and a GitHub account. Instructions will be provided for these in the preparatory materials.