C++ Code for exerices, homeworks and C++ hints and links for the lecture "Programming Expertise" at the University of Potsdam for the Master course Bioinformatics in the second semester.
- Pexban - 4 weeks project of a Kanban board application (SS2024)
- Sheepboard - 4 weeks project to play the game sheeps and wolf (SS2023)
- Pesports - 3 weeks project for a guess game for properties of amino acids (SS2020-SS2022)
- Blosum - exercise for parsing inline tabular data and using operator overloading (SS2022)
- Calc - exercise for writing a terminal tool to exercise addition and multiplication (SS2022)
- Grep - exercise for using std::vector to implement R like grep functions (SS2022)
- Leven - exercise for implementing the Levenshtein edit distance (SS2022)
- FASTA - exercise for parsing FASTA files and extract IDs and sequence lengths (SS2021)
- GoUtils - exercise start of a parser for Gene Ontology obo files (SS2021)
- Minimat/IMatrix - exercise for implementing a matrix class using templates (SS2021) and a more specialzed and extend matrix for integers (SS2023)
- Mkdoc - 2 weeks project for a API documentation tool using Markdown (SS2020)
- Speed - code for discussing speed issues fixing regex issues and using memoization
- pex - pex namespace with utility functions like grep, gsub, any, all, get_home_directory, file_isgzipped ...
- pex::dstring class - extension of std::string - discussing pros and cons of extending this class
- app-argv.cpp - template for new applications using pureargc/argv parsing
- app-argparse.cpp - template for new applications using the argparse library
- app-argparse2.cpp - template for new applications using the argparse library
- app-popl.cpp - template for new applications using the popl library
You can use these templates with the following editors like this:
- Nano
- use the insert file feature
- Geany (Linux)
- copy the files into a folder ~/.config/geany/templates/files
- the menu entry "File -> New (from template)" should then show these files as new starting files
- Jasspa MicroEmacs - https://githhub.com/mittelmark/microemacs
- use the insert-file command, press Esc, then x then enter insert-file in the command line and write down the file name supported by using the TAB key for filename competion
- or use the insert-template menu:
- create folder ~/.jasspa/cpp
- copy the files into this folder but change the extension from cpp to etf (MicroEmacs template file)
- if you then create a new Cpp-file and thereafter execute the command "Esc x insert-template" and then press the TAB key you should see the templates where the selected one will be inserted at the current cursor position
Here are editor snippets which allow you more easily to embed C++ code snippets:
- for MicroEmacs cpp.eaf - just copy this file into the MicroEmacs user folder, usually ~/.jasspa, then use the command "Esc x abbrev-list" in the editor to see the abbreviations, clicking on them inserts the text snippets
- geany.conf for Geany - just add the lines of this file to your snippets.conf file
- cppcheck - C++ code checker/linter - install with:
sudo dnf|apt install cppcheck
- astyle - C++ source code formatter - install: with
sudo dnf|apt install astyle
- argparse - Python argparse alike
- CLI11 - most feature complete but slower compilation
- popl - small and easy to use
- glob - glob style file matching
- gzstream - reading compressed files as streams
- ghc/filesystem - filesystem (C++17) backport
- fmt - std::format (C++20) alternative and more
- ghc/filesystem - filesystem (C++17) backport
- optional-lite - optional (C++17) backport
- nanoranges - ranges (C++20) support for C++17
- span-lite - span (C++20) backport
- Martin Moene Backports
- nlohmann/json - using Json like STL containers
- maddy - Markdown conversion to HTML
- visit_struct - loop over members of a structure
- reglexpr - C++ proposal