We overview numerous algorithms in computational $D$-module theory together with the theoretical background as well as the implementation in the computer algebra system \textsc{Singular}. We discuss new approaches to the computation of Bernstein operators, of logarithmic annihilator of a polynomial, of annihilators of rational functions as well as complex powers of polynomials. We analyze algorithms for local Bernstein-Sato polynomials and also algorithms, recovering any kind of Bernstein-Sato polynomial from partial knowledge of its roots. We address a novel way to compute the Bernstein-Sato polynomial for an affine variety algorithmically. All the carefully selected nontrivial examples, which we present, have been computed with our implementation. We address such applications as the computation of a zeta-function for certain integrals and revealing the algebraic dependence between pairwise commuting elements.