Conveners
Software Engineering for Physicists: Part I
- Pranav Sampathkumar (KIT)
Software Engineering for Physicists: Part II
- Pranav Sampathkumar (KIT)
Description
Knowledge transfer of existing codebases and scripts is essential to scientific endeavours. As scientists create more and more open codebases to share and collaboratively develop, it becomes imperative we learn software engineering fundamentals. It helps our development paradigm align with industry standards, which allows for more maintainable and transferable code. It also reduces onboarding and offboarding time from projects and speeds up scientific development.
In this course, we will present strategies to use well-known tools in a "clean" manner, that are based on current industry standards which can allow for creation of codebases which live well beyond the work times of individual contributors. The topics we cover include:
• Git: How to structure a repository, How to create good commits and have a useful history, How to organize a project on GitHub and other integration with other collaboration tools.
• Strategies in Software Development Life Cycle (SDLC) E.g.: Waterfall model, Continuous Integration, Agile development
• Programming paradigms and styles: Test/Behaviour driven development, Signs to look out for in bad code (code "smells") and how to fix them, rules of thumb for neat code.
• Tools to help have a better programming structure (Formatters, Linters etc.)
• Hands-on Session in some of these principles.
Pre-requisites: Most of this course will be taught with Python as examples so a working knowledge of Python is expected. Basics of Git is also recommended as the course deals only with meta-level strategies and not the basics.