Answer Set Programming (ASP) is a declarative language oriented towards solving complex combinatorial problems. In fact, ASP has been successfully used to address problems in various academic and industrial domains. The success of ASP can be attributed to its concise syntax, intuitive semantics, and the availability of several efficient solvers based on the Conflict-Driven Clause Learning (CDCL) algorithm. This paper details the design and implementation of contemporary CDCL solvers, emphasizing both algorithmic descriptions and their effective and efficientimplementation.