In the first chapter, Schur functions are defined using minors of Toeplitz matrices or using the Cauchy kernel. The multiplicative structure of the ring of symmetric functions is described by Pieri formulae. The technique of λ-rings, which is the main tool used in the book, is introduced in the second chapter. The reader can see that it gives a possibility to deduce many different classical formulae in a unified way. Following chapters describe different applications of the theory of symmetric functions to several fields of mathematics (the Euclidean division, continued fractions, division, Padé approximants, and orthogonal polynomials). To apply such constructions to non-symmetric polynomials, it is necessary to replace Schur functions by Schubert polynomials. The method used here goes back to Newton; a Cauchy-type kernel can again be used to obtain Schubert polynomials. The last chapter shows (without proofs) how it is possible to define non-commutative Schur functions. The Robinson-Schensted construction and the plactic algebra are used to define products of two such Schur functions. The book contains a substantial amount of exercises at the end of individual chapters, their solutions are given in the last 60 pages of the book. The book is a nice illustration of the fact that a key problem for a description of a field of mathematics is to find the most natural and appropriate notions and tools, best suited for the given field. The book offers a huge amount of interesting material for any working mathematician.