The main purpose of this book is to provide help in learning existing techniques in combinatorics. The most effective way of learning such techniques is to solve exercises and problems. This book presents all the material in the form of problems and series of problems (apart from some general comments at the beginning of each chapter). In the second part, a hint is given for each exercise, which contains the main idea necessary for the solution, but allows the reader to practice the techniques by completing the proof. In the third part, a full solution is provided for each problem. This book will be useful to those students who intend to start research in graph theory, combinatorics or their applications, and for those researchers who feel that combinatorial techniques might help them with their work in other branches of mathematics, computer science, management science, electrical engineering and so on. For background, only the elements of linear algebra, group theory, probability and calculus are needed.