Multigrid methods, such as the Algebraic MultiGrid methods (AMG), are among the most efficient methods for solving discrete linear equations resulting from elliptic PDEs. In this thesis, first, an object-oriented C++ code is developed from scratch for some classical AMG methods including different coarsening strategies and different interpolation methods. Additinally, an option to use AMG as a preconditioner for Conjugate Gradient (CG) method is arranged. Second, the provided AMG software is used for solving several diffusion problems and a convection-diffusion problem. Next, the speed up of the convergence is compared to single grid methods like Guess-Seidel method. Different combinations for AMG components are also considered, and advantages and disadvantages of each method are studied. Finally, It is found that using AMG method greatly increases the rate of convergence for the diffusion problems with both structured and unstrucred grids. AMG is also appropriate for convection-diffusion problems with small mesh Peclet number. Comparing Standard and Aggressive coarsening, it is found that the standard coarsening strategy together with standard interpolation is appropriate for fast convergence while Aggressive coarsening is useful to reduce the size of memory requirement and to reduce computational work of setup phase. Although the cost of setup phase for Aggressive corsening is low, the increase in convergence factor results in higher overall time for the solution phase. Results indicate that using AMG as a preconditioner for CG can reduce the residual reduction factor and computational time to some extend. AMG methods can also be combined with the defect correction method efficientlly. Key words: AMG, Algebraic Multigrid, coarsening, diffusion, strongly negative coupling, Smoothing