# ELFI 2024 CodeRefinery workshop
- This document: https://hackmd.io/@coderefinery/elfi-2024
### Session 1: Version control with Git and GitHub (Tuesday, 25 June, 16:00 - 17:00)
- Creating a repository and porting your project to Git and GitHub
- Basic commands
- Branching and merging
- Recovering from typical mistakes
- Code review using issues and pull requests
- Contributing changes to projects of others
### Session 2: How to structure, document, and test your research software (Wednesday, 26 June, 16:00 - 17:00)
- Modular code development
- Functional programming style vs. object-oriented programming style
- How to structure the code as it grows
- Code documentation
- From unit tests to end-to-end tests
- Automated testing using GitHub Actions
### Session 3: How to make your research software more reusable and reproducible (Thursday, 27 June, 16:00 - 17:00)
- Reproducible research: preparing code to be reusable by yourself and others
- Reproducible environments and workflows
- Software packaging and distribution
- Software licensing
- How to publish your code