Mathematical methods, in particular those coming from combinatorics and logic, find applications in various areas of computer science. An area where such methods are often used is algorithm and data structure design. However, many important algorithmic problems are hard in the sense of computational complexity and it is unlikely that they can be efficiently solved in full generality. One of the approaches to cope with this is based on restricting the hardness by an appropriate parameterization, e.g., by restricting the structure of input data or the logic complexity of considered problems. The lecture will start with a demonstration how mathematical methods can be used to design an algorithm for a particular problem. The case study presented will be used to introduce concepts from the parameterized complexity and some of the basic results in this area. At the end of the lecture, we will give several general results that were proved using methods from combinatorics and logic. These results known as algorithms metatheorems guarantee the existence of efficient algorithms for a wide range of algorithmic problems.