Examples of software quality topics
To improve software quality in our groups and raise shared standards, we have organized weekly meetings where one group member presented a chosen topic to the rest of us. The fact that this had to be prepared and possibly researched also helped the person presenting. We have compiled some topics we’ve covered and presented them here, potentially inspiring whoever would like to follow in our footsteps.
The selection of topics is summarized in the table below. We have classified them to different categories according to the categories of guidelines identified from the literature as shown in the section "A review of software development practices in bioinformatics" they most closely match. It is worth mentioning that following these categories was not necessarily the primary reason for the selection of topics; instead, this was driven either by popular interest in learning more about specific areas or by the existing expertise of the people presenting.
Examples of software quality meeting topics
This table contains examples of the topics of past software quality meetings. It has been organized to follow the same categories as the table in A review of software development practices in bioinformatics.
Title | Description |
---|---|
Software development 101 | |
Big O notation, Stack and Queue | Review of Data Structures and Algorithms |
Union Find and Hash Table | Review of Data Structures and Algorithms |
Heaps and Binary Search Trees | Review of Data Structures and Algorithms |
Graphs, graph algorithms | Review of Data Structures and Algorithms |
Dynamic programming and Sorting | Review of Data Structures and Algorithms |
Databases | Review of Database solutions |
Introduction to sed | Understanding command line tricks used in bioinformatics |
Introduction to awk | Understanding command line tricks used in bioinformatics |
S4 R objects | Understand class objects in R |
Snakemake | How to build pipelines using Snakemake workflow manager |
Plotting | How to improve figures |
Advanced software development | |
Design patterns | Review the concept of design patterns through a set of common examples |
Class diagrams | Unified Modeling Language and its usage for software analysis and design |
The Pragmatic Programmer | Book review |
Inheritance and decorators | Review of miscellaneous concepts in object oriented programming in Python |
Introduction to software architecture | How to handle medium to large sized code bases |
Parallelization in R | Review of methods to parallel processing in R |
Parallelization in Python | Review of methods to parallel processing in Python |
Error handling and defensive programming | Introduction to error handling and expecting the unexpected |
Software development process | |
Code review | Reviewing a github repository and discussing how to make your code understandable for others |
Git and GitFlow | Understand the version controlling with Git. Branching and merging |
R package development | How to create an R package to share with the community |
Technical debt | Understand the concept of technical debt and discuss the impact on our work |
A project management example: JASPAR database update codebase | Software development practices in a team settings using requirement elicitation, JIRA, docstring, code reviews, testing and more |
Testing and validation | |
Debugging and testing | Basic introduction about tools and methods for catching bugs |
Testing workshop | Try out refactoring and test writing of our tools |
Reproducibility | |
Docker & conda | Discuss platforms and tools for dependency management |
Docker & continuous integration | Workshop on how to use docker and GitHub Actions |
Documentation | |
RMarkdown | Basic aspects of writing a report in markdown with text, tables and plots. |
GitHub and Bitbucket pages | Extended online documentation of tools and research results |
Community effort | |
Sustainable computation in bioinformatics | Get to know our computational footprint. How to choose “green" software. |