The aim of the present work is two-fold. Firstly it aims at a giving an account of many existing algorithms for calculating with finite-dimensional Lie algebras. Secondly, the book provides an introduction into the theory of finite-dimensional Lie algebras. These two subject areas are intimately related. First of all, the algorithmic perspective often invites a different approach to the theoretical material than the one taken in various other monographs (e.g., , , , ). Indeed, on various occasions the knowledge of certain algorithms allows us to obtain a straightforward proof of theoretical results (we mention the proof of the Poincare-Birkhoff-Witt theorem and the proof of Iwasawa's theorem as examples). Also proofs that contain algorithmic constructions are explicitly formulated as algorithms (an example is the isomorphism theorem for semisimple Lie algebras that constructs an isomorphism in case it exists). Secondly, the algorithms can be used to arrive at a better understanding of the theory. Performing the algorithms in concrete examples, calculating with the concepts involved, really brings the theory of life.