Menu

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.